当前位置: 首页 > 知识库问答 >
问题:

java-jar我的jar。jar java。lang.NoClassDefFoundError:javax/mail/Part[重复]

微生信鸿
2023-03-14

我创建了一个java应用程序来从Gmail地址读取。当我从IDE(Intellij)执行脚本时,脚本运行完美。但是通过生成jar文件并尝试执行jar:

java -jar my-jar-file.jar

我有以下错误:

java.lang.NoClassDefFoundError: javax/mail/Part
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
at java.lang.Class.getMethod0(Class.java:2866)
at java.lang.Class.getMethod(Class.java:1676)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: javax.mail.Part
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more
Exception in thread "main" 

这是我的POM文件:

 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>my.group.id</groupId>
<artifactId>readMail</artifactId>
<version>1.0-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>my.MainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
<properties>
   ....
</properties>
<dependencies>
    ....
    <!-- POP, SMTP, IMAP -->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mailapi</artifactId>
        <version>1.4.3</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1</version>
    </dependency>
    ....
</dependencies>

共有2个答案

曾鸿振
2023-03-14

https://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html

尝试将其编译为一个胖jar,将依赖项嵌入到jar中。我不确定这是否可行

云英才
2023-03-14

您必须使用Maven Shade插件创建一个胖jar,其中包括所有依赖项树。

 类似资料:
  • 添加以下Jar文件到WebContent/WEB-INF/lib javax.mail-1.5.2.jar commons-email-1.3.3.jar 前面的是java mail的实现,后者是apache common mail

  • 我想将我的应用程序部署到版本7中的tomcat上,得到以下异常,但如果我尝试将此应用程序部署到tomcat版本8,它可以正常工作。 你有办法解决这个问题吗? 为什么我要从tomcat 8切换到7?在测试环境中,repo中是tomcat 8,而在服务器上是tomcat7。 波姆。xml 网状物xml

  • 问题内容: 我需要阅读该文件,该文件提供了我的课程,但是当我使用时: 我MANIFEST从第一个加载到Java运行时中就得到了。 我的应用程序将从或运行, 所以我无法访问自己的文件。 我实际上是想从启动的中读取属性,因此可以将这些包公开给Felix。有任何想法吗? 问题答案: 你可以执行以下两项操作之一: 调用并遍历返回的URL集合,将它们作为清单读取,直到找到你的URL: 你可以尝试检查是否是的

  • 我是乌斯金·贾斯珀报道。在develop中,它工作得很好。但在编译jar时,系统会抛出“src/main/resources/reports/myJasperReport.jxml”的异常并将其FileNotFound 当我探索JAR时,我发现报告的URL是"/BOOT-INF/class/resport/myJasperReport.jxml" 我发现这个指向jar内文件的链接不可见,但并没有解

  • 问题内容: 是否可以指定一个Java ,其中包含另一个JAR文件中包含的JAR文件? 问题答案: 如果您试图创建一个包含应用程序及其所需库的jar,则有两种方法(我知道)。第一个是One-Jar,它使用特殊的类加载器来允许jar的嵌套。第二个是UberJar(或Shade),它会爆炸包含的库并将所有类放在顶级jar中。 我还应该提到UberJar和Shade分别是Maven1和Maven2的插件。

  • 我创建了一个包含我所有编译内容的jar文件。此外,我的ant build脚本将所需的libs复制到子文件夹“libs”中。结构如下所示: 所以当我现在尝试运行我的程序时,我收到以下错误: 为什么会发生这种情况?