【问题标题】:How can Netbeans run my application when some of my application's dependencies are not in the "Libraries" folder?当我的一些应用程序的依赖项不在“库”文件夹中时,Netbeans 如何运行我的应用程序?
【发布时间】: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 的一些基本知识导致了这个问题。

我有两个问题:

  1. 当我的应用程序的某些依赖项不在“库”文件夹中时,Netbeans 如何运行我的应用程序?
  2. 是否有任何方法可以自动将“Libraries”文件夹中未明确列出的所有依赖项导出到“[Project-Name]\dist\lib”?

另外,我的项目不是 Maven 项目。

【问题讨论】:

  • 从内存中,你需要告诉maven它应该如何处理依赖,for exampleexample
  • 如果我的项目不使用 Maven 怎么办?
  • 哦,抱歉,由于某种原因,我认为这是一个 Maven 项目 - “有没有办法自动将“库”文件夹中未明确列出的所有依赖项导出到“[项目-Name]\dist\lib"" - 您可以自定义项目使用的 Ant 脚本来执行此操作。更好的解决方案可能是将依赖的jars 直接添加到您的项目中
  • 我有点好奇如果依赖项在您的项目类路径中,您将如何编译,这通常是项目的 library 属性的控制器
  • 我也很好奇,这就是我问问题 1 的原因。我的直觉是我缺少一些关于 Netbeans 或 Java EE 应用程序的基本知识(我的应用程序是一个 Java EE 应用程序客户端,这是我第一次将 Java EE 项目放在一起)。

标签: java jakarta-ee netbeans


【解决方案1】:

如果我正确理解 Netbeans 的工作原理,它“不应该”将未在 Library 文件夹中列出的内容添加到类路径中。在这方面,Netbeans 只是构建工具的一个包装器。在您的情况下,哪个似乎是蚂蚁?至少如果您从向导创建一个标准的“Java 应用程序”,它就是这样。因此,当您点击“Clean Compile”时,您应该会在控制台/输出中看到类似这样的内容:

ant -f /home/daniel/NetBeansProjects/MyApp -Dnb.internal.action.name=rebuild clean jar

这意味着他将使用您项目根目录中的 build.xml。您将在该文件中找到存在哪些目标的文档。也是一个运行目标。因此,您应该能够跟踪 Netbeans 设置哪些参数/类路径来运行您的应用程序。 您也可以简单地尝试从控制台执行,看看是否也可以在这里编译和运行它。

此外,我很困惑您收到 com.sun.xml.internal.ws.spi.ProviderImpl 的 classnotfoundexception,因为这是 JDK 附带的 JAX-WS 客户端的参考实现的一部分。因此,默认情况下,您应该在类路径中拥有它。您使用的是 Java 8 还是 9 的 Java 版本? 在 Netbeans 的库部分下,您应该能够看到类似 JDK 1.8 的内容。如果您展开它并查看 rt.jar,您将/应该找到您提到的类。

https://docs.oracle.com/javase/8/docs/technotes/guides/xml/jax-ws/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多