Java Jar中的Eclipse Jar无法找到joda.time类

Java Jar中的Eclipse Jar无法找到joda.time类,java,eclipse,jar,Java,Eclipse,Jar,Eclipse有3个可运行的JAR导出方法。其中一个对我来说不起作用。我想停止使用导出方法,该方法生成库子文件夹并切换到单个JAR 在所有情况下,我的调用都是在脚本中进行的,带有一些脚本变量,例如$MEMORYOPTIONS java$memoryooptions-enableassertions-classpath-variable-show-down-topLevelDomain.domain.packageName.className$1$2$3 首先 我成功地使用了下面的导出方法和类路径

Eclipse有3个可运行的JAR导出方法。其中一个对我来说不起作用。我想停止使用导出方法,该方法生成库子文件夹并切换到单个JAR

在所有情况下,我的调用都是在脚本中进行的,带有一些脚本变量,例如$MEMORYOPTIONS

java$memoryooptions-enableassertions-classpath-variable-show-down-topLevelDomain.domain.packageName.className$1$2$3

首先

我成功地使用了下面的导出方法和类路径,如图所示

export>runnable jar>提取所需库

-classpath/home/user/workspace/project/project1.jar

我有理由不想用这个罐子。(这是因为未打包的第三方软件包暴露了具有重复名称的文件,因此我收到了恼人的警告。例如:一个名为License.txt的文件位于多个软件包中。)

其次

如前所述,我还成功地使用了以下“库子文件夹”导出方法和类路径,如图所示

export>runnable jar>将所需库复制到子文件夹中

-classpath/home/user/workspace/project/project1.jar:/home/user/workspace/project/project1\u lib/*

(编辑:由于JAR有一个指向project1_lib子文件夹的清单,因此可以简化类路径以忽略该子文件夹。只需从类路径中删除冒号(:)分隔符后的部分。)

第三

我将“PackageRequiredLibraries”解释为JAR-in-JAR导出。使用显示的类路径调用,此导出将导致查找该类失败

export>runnable jar>包所需库

-classpath/home/user/workspace/project/project1.jar

错误是:

线程“main”java.lang.NoClassDefFoundError中的异常:org/joda/time/ReadablePartial

如何使这种特定类型的Eclipse导出工作?我已经卸载并重新安装了Eclipse(Mars)。我也有
删除了
org.joda.time
包并将其重新添加。问题依然存在

> P>你是否考虑创建一个强的Uber jar < /强>?/P> 使用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>

org.apache.maven.plugins
maven阴影插件
2.4.2
包裹
阴凉处
乔达时间:乔达时间
**
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA

希望这有帮助。

您需要使用类作为参数调用绑定的
jarsrcloader

java $MEMORYOPTIONS -enableassertions 
-classpath /home/user/workspace/project/project1.jar 
org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
topLevelDomain.domain.packageName.className

但是,这不允许您将参数(
$1$2$3
)传递给被调用的类。

您应该使用
java
-jar
选项启动应用程序。大概是这样的:

java $MEMORYOPTIONS -enableassertions -jar /path/to/project1.jar $1 $2 $3

当所有其他的都失败时,我会考虑使用外接程序。