【发布时间】:2017-12-31 19:59:48
【问题描述】:
我有一个应用程序,当我从 Netbeans 运行它时它可以正常工作,但是当我从 Netbeans“清理和构建”命令生成的可执行 jar 运行它时它不能正常工作。特别是,对于不是我项目的“库”文件夹的类(例如,com.sun.xml.internal.ws.spi.ProviderImpl,以及各种com.sun.xml 中的其他类)。
我知道当给定的类不在应用程序的类路径中时会引发 ClassNotFoundException。我已经开始手动将所有各种依赖项添加到 Netbeans 创建的“[Project-Name]\dist\lib”文件夹中,但我觉得这不是正确的做法。编辑:这似乎不适用于所有依赖项,即使具有相关类的 jar 位于“[Project-Name]\dist\lib”中,也会引发 ClassNotFoundExceptions。
将“Libraries”文件夹中列出的内容放入“[Project-Name]\dist\lib”文件夹中没有问题。
我注意到“库”文件夹中未列出的依赖项是各种 Java EE 组件。由于这个程序是一个连接到 Java EE 服务器的应用程序客户端,而且这是我的第一个 Java EE 项目,所以我猜想是我不了解 Java EE 的一些基本知识导致了这个问题。
我有两个问题:
- 当我的应用程序的某些依赖项不在“库”文件夹中时,Netbeans 如何运行我的应用程序?
- 是否有任何方法可以自动将“Libraries”文件夹中未明确列出的所有依赖项导出到“[Project-Name]\dist\lib”?
另外,我的项目不是 Maven 项目。
【问题讨论】:
-
从内存中,你需要告诉maven它应该如何处理依赖,for example和example
-
如果我的项目不使用 Maven 怎么办?
-
哦,抱歉,由于某种原因,我认为这是一个 Maven 项目 - “有没有办法自动将“库”文件夹中未明确列出的所有依赖项导出到“[项目-Name]\dist\lib"" - 您可以自定义项目使用的 Ant 脚本来执行此操作。更好的解决方案可能是将依赖的
jars 直接添加到您的项目中 -
我有点好奇如果依赖项在您的项目类路径中,您将如何编译,这通常是项目的
library属性的控制器 -
我也很好奇,这就是我问问题 1 的原因。我的直觉是我缺少一些关于 Netbeans 或 Java EE 应用程序的基本知识(我的应用程序是一个 Java EE 应用程序客户端,这是我第一次将 Java EE 项目放在一起)。
标签: java jakarta-ee netbeans