【发布时间】:2021-07-14 14:26:33
【问题描述】:
我的程序是一个使用 maven 在 java 11.0.11 上运行的 java 程序。我使用 JAF 和 JavaMail API 以便在按下按钮后在我的代码中发送电子邮件。当我使用 VScode 运行代码时,它可以正常工作,但是当我使用 mvn package 编译它并使用 java - jar recipt_generator-1.jar 运行它并按下应该发送电子邮件的按钮时,它会引发以下异常:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/mail/Authenticator
at com.recipt.EndMenu$3.actionPerformed(EndMenu.java:70)
at java.desktop/java.awt.Button.processActionEvent(Button.java:411)
at java.desktop/java.awt.Button.processEvent(Button.java:379)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.ClassNotFoundException: javax.mail.Authenticator
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 22 more
我尝试更改 maven 编译器版本,添加 javax.mail.jar 和 activation.jar 的依赖项,并检查我使用的每个 jar 是否在类路径环境变量中。
我请求您的帮助,因为我真的很困惑 - 该程序使用 VScode 运行选项完美地发送电子邮件,但是在编译时错误一直显示。
我会给予任何帮助。
【问题讨论】:
-
你能发布你的maven pom.xml吗?
-
清理项目也不行吗?试试
mvn clean package -
非常感谢您创建自己的答案。但请不要把它反映在应该只是一个问题的地方。
标签: java maven exception visual-studio-code compilation