Eclipse有3个可运行的JAR导出方法。其中一个在我的情况下不起作用。我想停止使用导出库子文件夹并切换到单个JAR的导出方法。
在所有情况下,我的调用都在脚本中,有一些脚本变量,例如$ MEMORYOPTIONS
java $MEMORYOPTIONS -enableassertions -classpath VARIOUS-SHOWN-BELOW topLevelDomain.domain.packageName.className $1 $2 $3
...首先
我已成功使用以下导出方法和类路径,如图所示。
export > runnable jar > extract required libraries
-classpath /home/user/workspace/project/project1.jar
我有理由不想使用这个单一的JAR。 (这是因为未打包的第三方软件包暴露了具有重复名称的文件,因此我收到了令人讨厌的警告。示例:名为License.txt的文件位于多个软件包中。)
...其次
如前所述,我也成功使用以下"库子文件夹"导出方法和类路径如图所示。
export > runnable jar > copy required libraries into a sub-folder
-classpath /home/user/workspace/project/project1.jar:/home/user/workspace/project/project1_lib/*
(编辑:事实证明,JAR有一个指向project1_lib子文件夹的清单,因此可以简化类路径以省略它。只需从类路径中删除冒号(:)分隔符之后的部分。)< / p>
...第三
我解释&#34;打包所需的库&#34;表示JAR-in-JAR导出。使用显示的类路径调用时,此导出将导致无法找到该类。
export > runnable jar > package required libraries
-classpath /home/user/workspace/project/project1.jar
错误是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/ReadablePartial
如何让这种特殊类型的Eclipse导出工作?我已经卸载了Eclipse(Mars)并重新安装了。我也有
删除了org.joda.time
包并将其添加回来。问题依然存在。
答案 0 :(得分:1)
你考虑过创建一个超级罐吗?
使用 maven ,您只需添加以下插件定义并使用命令 mvn package
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>joda-time:joda-time</artifact>
<includes>
<include>**</include>
</includes>
</filter>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
希望这有帮助。
答案 1 :(得分:0)
您需要将您的类作为参数调用捆绑的JarRsrcLoader
:
java $MEMORYOPTIONS -enableassertions
-classpath /home/user/workspace/project/project1.jar
org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
topLevelDomain.domain.packageName.className
但是,这不允许您将参数($1 $2 $3
)传递给被调用的类。
答案 2 :(得分:-1)
您应该使用java
-jar
选项启动您的应用。像这样:
java $MEMORYOPTIONS -enableassertions -jar /path/to/project1.jar $1 $2 $3