NetBeans项目引用问题

3

我有两个项目:Test1和Test2。Test2有一个脚本来测试项目文件夹:

this.getClass().getClassLoader().getResource("").getPath()    

结果是:

/home/andy/Documents/Project/Test2/build/classes/

当Test2将Test1添加到编译时库中:

this.getClass().getClassLoader().getResource("").getPath()

结果为:

/home/andy/Documents/Project/Test1/build/classes/

所以我的问题是:
在将Test1添加到编译时库之后,为什么路径仍然不是/home/andy/Documents/Project/Test2/build/classes/
1个回答

0
您正在请求一个类加载器,更具体地说是用于加载Test2.class的类加载器。之后,您会要求类加载器获取一个资源。类加载器的默认行为是询问父类加载器 (如果它能够解析该请求)。由于您没有父类加载器,因此将使用 jvm 的引导类加载器。当使用空名称请求资源时,它可以通过类路径的第一个条目来满足此请求。根据 NetBeans 如何配置类路径,这可以是 Test1 或 Test2 中的任一个。
如果您想要确定性结果,请指定项目中唯一的资源。

我已经更改为test2.Main.class.getClassLoader().getResource("").getPath(); 结果仍然相同:/home/andy/Documents/Project/Test1/build/classes/,其中test2是包名,Main是类名,我该如何修复它? - Andy Chan
有人有想法吗?这是NetBeans 8.1中的一个错误吗?我必须进行项目引用,否则导入不同的*.jar会很麻烦,请帮帮我,谢谢! - Andy Chan
加载属于相应项目的资源。例如getResource("fileProject1.txt") - Thomas
主线程异常:"main" java.lang.NullPointerException 在maas.server.https.SecureServer.getPath(SecureServer.java:93)处 在maas.server.https.SecureServer.start(SecureServer.java:38)处 在maas.Main.main(Main.java:12)处 即使getResource("name.txt")或getResource("./name.txt") - Andy Chan
你的项目中实际上有一个名为 "name.txt" 的资源文件,并且它在项目的类路径中可用吗? - Thomas
我已经修复了问题,现在需要将从src开始的相对路径转换为完整路径,例如使用 getResource("xxx/xxx/xxx/fileProject1.txt")。 - Andy Chan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接