我使用插件
创建了一个带有maven的可执行jar <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>pack.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
我拥有src/min/resources
文件夹中的所有依赖项。在我构建jar后,我使用归档管理器解压缩它,我可以在根级别看到所有依赖项。
以下是我尝试访问资源的方法
ClassLoader classLoader = getClass().getClassLoader();
dataIn = new MarkableFileInputStreamFactory(
new File(classLoader.getResource("trainingData").getFile()));
这在Eclipse中运行得很好。但是当我尝试运行可执行jar文件时,我得到了
java -jar target/my-0.0.1-SNAPSHOT-jar-with-dependencies.jar -o 1
java.io.FileNotFoundException: File 'file:/path/to/myProject/target/my-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/trainingData' cannot be found
为什么JVM正在寻找File 'file:/path/to/myProject/target/my-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/trainingData'
?
我该怎么做才能解决这个问题?