如何用com.sun.security.auth.module.UnixSystem获取用户名并拼接路径?
解决方案
问题分析
你原代码的主要问题包括:
- 变量定义位置错误(类外部不能直接定义变量)
- 变量类型写错(
type应为String) - Java不支持
targetFilePath:这种命名参数调用方式 - 缺少必要的类导入
修正后代码
import com.sun.security.auth.module.UnixSystem; public class Main { public static String CodeKey = "RAWW"; // 动态获取当前Unix用户名 private static final String CURRENT_USER = new UnixSystem().getUsername(); // 替换固定用户名,动态拼接basedir路径 public static String basedir = "/Users/" + CURRENT_USER + "/Desktop/random/"; public static void main(String[] args) { // FireUP(); // 为targetFilePath补充当前用户名,按需求拼接路径 String targetFilePath = "/Users/" + CURRENT_USER; Encrypt(targetFilePath); } // 补充Encrypt方法的定义(原代码缺失,否则编译报错) public static void Encrypt(String targetFilePath) { // 这里写你的加密逻辑 } }
关键修改说明
- 导入必要类:必须导入
com.sun.security.auth.module.UnixSystem才能使用它获取用户名 - 动态获取用户名:将用户名定义为静态常量,方便在类的静态属性和方法中复用
- 替换固定路径:用字符串拼接替换
basedir中的固定用户名"fuzzer" - 修正方法调用:Java不支持命名参数,先拼接好完整的
targetFilePath再传入Encrypt方法
注意事项
UnixSystem是Oracle JDK的内部API,在OpenJDK环境下可能需要添加编译参数--add-modules jdk.security.auth才能正常访问- 该类仅在Unix/Linux/macOS环境下可用,Windows系统运行会抛出异常
内容的提问来源于stack exchange,提问作者william
相关产品推荐
相关产品推荐

