解决异常:Invalid layout of java.lang.String at value

异常信息:

Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (javaClasses.cpp:129), pid=4104, tid=5764
#  fatal error: Invalid layout of preloaded class
#
# JRE version: 7.0_15-b03
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.7-b01 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\workspace-android\test\hs_err_pid4104.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#

===================================================================

解决办法如下:

第一:

 

第二,选择你运行的类

第三:Run as -> Run Configurations,去掉andorid运行时的jar

以上是操作示例:

 

 

### Spring Boot 和 Vue 实现前后端分离的登录功能 #### 后端 (Spring Boot) 在后端部分,可以通过创建一个简单的 REST API 来处理用户的登录请求。 1. **配置依赖项** 需要在 `pom.xml` 文件中添加必要的依赖项来支持 Web 开发和安全认证。 ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- JSON Web Token Support --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.5</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.5</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>0.11.5</version> <scope>runtime</scope> </dependency> </dependencies> ``` 2. **创建控制器** 创建一个用于处理登录逻辑的控制器类: ```java @RestController public class AuthController { private final UserService userService; public AuthController(UserService userService) { this.userService = userService; } @PostMapping("/login") public ResponseEntity<?> authenticateUser(@RequestBody LoginRequest loginRequest) { Authentication authentication = null; try { authentication = new UsernamePasswordAuthenticationToken( loginRequest.getUsername(), loginRequest.getPassword() ); SecurityContextHolder.getContext().setAuthentication(authentication); } catch (Exception e) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid credentials"); } String token = JwtUtils.generateJwtToken(authentication); return ResponseEntity.ok(new JwtResponse(token)); } } ``` 3. **JWT 工具类** 使用 JWT(JSON Web Tokens)作为身份验证机制的一部分。可以编写工具类来自动生成令牌并解析它。 ```java import io.jsonwebtoken.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; import java.util.Date; @Component public class JwtUtils { private static final Logger logger = LoggerFactory.getLogger(JwtUtils.class); private String jwtSecret = "your_jwt_secret"; private int jwtExpirationMs = 86400000; // One day. public String generateJwtToken(Authentication authentication) { UserDetailsImpl userPrincipal = (UserDetailsImpl) authentication.getPrincipal(); return Jwts.builder() .setSubject((userPrincipal.getUsername())) .setIssuedAt(new Date()) .setExpiration(new Date((new Date()).getTime() + jwtExpirationMs)) .signWith(SignatureAlgorithm.HS512, jwtSecret) .compact(); } public boolean validateJwtToken(String authToken) { try { Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(authToken); return true; } catch (SignatureException e) { logger.error("Invalid JWT signature: {}", e.getMessage()); } catch (MalformedJwtException e) { logger.error("Invalid JWT token: {}", e.getMessage()); } catch (ExpiredJwtException e) { logger.error("JWT token is expired: {}", e.getMessage()); } catch (UnsupportedJwtException e) { logger.error("JWT token is unsupported: {}", e.getMessage()); } catch (IllegalArgumentException e) { logger.error("JWT claims string is empty: {}", e.getMessage()); } return false; } } ``` --- #### 前端 (Vue.js) 前端部分主要负责发送登录请求并将返回的 JWT 存储到本地存储中以便后续使用。 1. **安装 Axios** 安装 Axios 库以方便发起 HTTP 请求。 ```bash npm install axios ``` 2. **修改 main.ts 文件** 如果需要全局引入 Ant Design Vue 组件库,则可以在 `main.ts` 中完成如下设置: ```typescript import { createApp } from 'vue'; import App from './App.vue'; // 引入 ant-design-vue import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; const app = createApp(App); app.use(Antd); app.mount('#app'); ``` 3. **创建登录页面** 编写一个简单的登录表单组件,并通过 Axios 发送 POST 请求至后端接口 `/login`。 ```html <template> <a-form :model="formState" name="normal_login" layout="vertical"> <h1>Login Page</h1> <a-form-item label="Username"> <a-input v-model:value="formState.username"/> </a-form-item> <a-form-item label="Password"> <a-input-password v-model:value="formState.password"/> </a-form-item> <a-button type="primary" block @click="handleSubmit">Login</a-button> </a-form> </template> <script lang="ts"> import { defineComponent, reactive } from 'vue'; import axios from 'axios'; export default defineComponent({ setup() { const formState = reactive({ username: '', password: '' }); function handleSubmit(): void { axios.post('http://localhost:8080/login', { username: formState.username, password: formState.password }).then(response => { localStorage.setItem('token', response.data.token); // 将 token 存储到 LocalStorage alert('Logged In Successfully!'); }).catch(error => { console.log(error.response.data.message || error.message); alert('Error Logging In.'); }); }; return { formState, handleSubmit }; }, }); </script> ``` --- #### 总结 上述代码展示了如何利用 Spring Boot 构建后端服务以及 Vue.js 进行前端交互[^1]。具体来说,在后端实现了基于 JWT 的用户认证流程;而在前端则构建了一个简单的登录界面并通过 Axios 调用后端 API 接口完成登录操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值