从jar中调用时,ClassLoader始终返回null

时间:2015-05-03 16:04:55

标签: java maven classloader

我通过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内部加载)。我的方法有什么问题?

0 个答案:

没有答案