所以我有一个java项目,我现在可以使用
获取文件的路径String pathname = test.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
这是返回/ home / mrpickles / Desktop / HANSTUFF / securesdk / src,这是我文件的路径,名为" JavaWrapper.java"与班级" JavaTest"。我希望它返回的是" /home/mrpickles/Desktop/HANSTUFF/securesdk/src/JavaWrapper.java,以便路径包含文件名。我该怎么做?
答案 0 :(得分:0)
实际上你不能。
您确实知道编译后.java
个文件会转换为.class
个文件,对吗?
唯一可以保留的是包结构。并且单个.java
文件只能包含一个与.java
文件名匹配的公共类,但它可以包含多个具有不同名称的类。
将.java
文件编译成.class
文件后,您可以将它们保存在相同的包结构中,从而将它们移动到不同的位置。因此,您的来源.java
位置可能与.class
文件位置不同。
<强>更新强>
您可以打印基本的完整班级名称以及加载类文件的位置:
public class Test {
public static void main(String[] args) {
Test test =new Test();
System.out.println("Class Name: "+test.getClass().getSimpleName());
System.out.println("With Package Name: "+test.getClass().getName());
System.out.println("Location: "+ClassLoader.getSystemResource("Test.class"));
}
}
<强>输出:强>
Class Name: Test
With Package Name: com.test.Test
Location: file:/C:/workspace/Test-Project/build/classes/Test.class