java - Eclipse Jar-in-Jar 找不到 joda.time 类

标签 java eclipse jar

Eclipse 有 3 种可运行的 JAR 导出方法。其中之一不适用于我的情况。我想停止使用生成库子文件夹的导出方法并切换到单个 JAR。

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

java $MEMORYOPTIONS -enableassertions -classpath VARIOUS-SHOWN-BELOW topLevelDomain.domain.packageName.className $1 $2 $3

首先...

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

export > runnable jar > 提取需要的库

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

我有理由不想使用这个单一的 JAR。 (这是因为未打包的第三方包暴露了具有重名的文件,所以我收到了烦人的警告。示例:一个名为 License.txt 的文件在几个包中。)

其次...

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

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

-classpath/home/user/workspace/project/project1.jar:/home/user/workspace/project/project1_lib/*

(编辑:事实证明,JAR 有一个指向 project1_lib 子文件夹的 list ,因此可以简化类路径以省略它。只需从类路径中删除冒号 (:) 分隔符之后的部分。)

第三...

我将“包需要的库”解释为 JAR-in-JAR 导出。使用显示的类路径调用,此导出导致找不到类。

export > runnable jar > package required libraries

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

错误是:

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

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

最佳答案

您是否考虑过创建一个uber jar

使用ma​​ven,您只需添加以下插件定义并使用命令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>

希望这对您有所帮助。

关于java - Eclipse Jar-in-Jar 找不到 joda.time 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426457/

相关文章:

java - 快速 Java 二进制格式解析

c++ - 在 Ubuntu 18.04 上运行 Eclipse-CDT 导致 java.lang.ClassNotFoundException

java - 使用动态名称创建变量 - Java

java - 为什么我有时会在 Eclipse 快速修复中得到 <?> 通配符

java - NDK <Utils/Log.h> 没有那个文件或目录

java - 从外部 JAR 读取图像

java - Quarkus 开发模式显示没有静态文件

java - 在命令Pompt(Gradle Build)中执行Jar文件时出错:NoClassDefFoundError:org/apache/poi/xssf/usermodel/XSSFWorkbook

java - 如何迭代对象列表以从中创建新的 Map?

java - log4j:找不到根记录器信息。这个可以吗?