gam*_*may 7 java xml jar maven
(这似乎是一个微不足道的问题,但坚持了2天:()
我有一个可运行的jar(用它创建maven assembly plugin).jar中的类在类路径中查找xml文件.但是,我们不希望将jar文件中的xml文件捆绑在一起并希望将其外部化.
试过到现在:
在运行时设置类路径:
java -classpath ./conf -jar my-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)==>不加载(conf文件夹包含xml)
在汇编程序插件中设置classpath
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>com.xxx.Test</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>./conf/</classpathPrefix>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)==>不会将ClassPath添加到runnable jar中的MANIFEST.MF
编辑:
生成MAINFEST.MF在jar中:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: xxx
Build-Jdk: 1.7.0_21
Main-Class: com.xxx.Test
Run Code Online (Sandbox Code Playgroud)
编辑2:
所以我编辑了MANIFESTjar中生成的并重新创建了jar.仍然没有找到xml!
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: xxx
Build-Jdk: 1.7.0_21
Main-Class: com.xxx.Test
Class-Path: . /* Tried with both . and ./conf */
Run Code Online (Sandbox Code Playgroud)
这个问题似乎没有一个好的答案。总之:
java -jar忽略-cp选项ClassPath也manifset没有效果(不确定是否是由于库加载 xml 的任何特定方式所致)因此,唯一有效的选项是手动调用类文件:
$ java -cp <...> MyPackage.MyClass
Run Code Online (Sandbox Code Playgroud)
其中,cp 包含 jar 文件和 conf 文件夹路径。
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |