【问题标题】:NetBeans RCP application classpathNetBeans RCP 应用程序类路径
【发布时间】:2011-08-14 19:52:13
【问题描述】:

我正在开发 NetBeans RCP 应用程序。该应用程序由几个模块组成,所有模块(以及应用程序项目本身)都由 maven 管理。我需要将自定义 jar 添加到应用程序类路径中。有简单的方法吗?特别是,我需要添加每个模块的类路径,以便应用程序能够加载模块依赖项,如下所示:

ModuleXxx 依赖于 LibXxx ModuleYyy 依赖于 ModuleXxx

我需要获取 LibXxx jar 路径,它应该在模块类路径中。

感谢您的帮助。

【问题讨论】:

  • LibXxx.jar 是否可从 Maven 存储库或作为 Maven 项目获得?或者它只是你从某个地方得到的一个罐子?
  • LibXxx 可从 Maven 存储库获得,本地复制到 .m2 存储库中。

标签: java netbeans classpath classloader rcp


【解决方案1】:

我原以为从 ModuleXxx 到 LibXxx 的简单 Maven 依赖关系就足够了。你试过吗?有什么问题吗?

【讨论】:

  • 不,那是错误的,因为你的模块只有“jar”。模块化系统中不能有一个“jar”两次(某些例外情况除外)。
  • @user1722245 这是一个旧答案,我没有使用过 NetBeans RCP,但通常如果多个 Maven 模块依赖于 jar X,您最终不会得到多个 X 副本。您的申请中只有副本。
  • 致 @user1722245:抱歉,但是像 OSGi 或 NetBeans RCP 这样的模块化系统的工作方式不同。每个包/模块都有自己的类路径,可以通过依赖(基于 MANIFEST 额外指令)扩展到其他包(更好的包)/模块(RCP)。所以你的评论是错误的。您的答案仅适用于具有“ONE classpath”的应用程序。你不与 RCP 合作,这是真的。
  • 错字:“我还没有使用过 NetBeans RCP”有一段时间了
  • @user1722245:您将运行时类路径与静态构建时依赖树混合在一起。当你组装一个应用程序时,你通常只提供每个模块 jar 的一个副本。每个模块都有自己的 ClassLoader 和依赖 ClassLoader 的树。至少这就是我目前使用基于 OSGi 的 Drombler FX 应用程序的方式,据我所知,它与 NetBeans RCP 类似。
【解决方案2】:

您不能将“jar”添加到类路径,因为 netbeansrcp 是模块的 SET,它具有自己独立的类路径;-) 所以,您应该创建新模块,该模块具有依赖“jar”(例如通过 maven),然后在 pom.xml 中。然后将您的依赖模块依赖项设置为新的 LibWrappedModule

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>nbm-maven-plugin</artifactId>
<version>3.2</version>
<extensions>true</extensions>
<configuration>
                <publicPackages>
                    <publicPackage>com.mycompany.textfilter</publicPackage>
                </publicPackages>

</configuration>

更多信息在https://platform.netbeans.org/tutorials/70/nbm-maven-quickstart.html

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 2013-01-22
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多