我通过maven从我的代码创建一个jar后遇到了库加载问题。我在Ubuntu上使用了intelliJ的想法。我把问题解决了这个问题:
从想法中调用以下代码,它会正确打印路径。
package com.myproject;
public class Starter {
public static void main(String[] args) {
File classpathRoot = new File(Starter.class.getResource("/").getPath());
System.out.println(classpathRoot.getPath());
}
}
输出是:
/home/ted/java/myproject/target/classes
当我调用mvn install
并尝试使用以下命令从命令行运行它时,我NullPointerException
获得了class.getResource()
,因为null
返回cd /home/ted/java/myproject/target/
java -cp myproject-0.1-SNAPSHOT.jar com.myproject.Starter
:
cd /home/ted/java/myproject/target/
java -Djava.library.path=. -cp myproject-0.1-SNAPSHOT.jar com.myproject.Starter
同样适用于:
class.getClassLoader().getRessource("")
如果我改用class.getClassLoader().getRessource("file.txt")
,那无关紧要。访问目标目录内的单个文件时,通过zero_channel
进行相同的问题。
我想用这种方式在同一目录中加载本机文件(而不是从jar内部加载)。我的方法有什么问题?