【发布时间】:2014-11-18 15:22:24
【问题描述】:
我想将包含 API 的外部 .jar 添加到使用 NetBeans 中的模板 maven-web 应用程序创建的项目中。 似乎在使用此类模板创建的项目中,Libraries 文件夹不存在(如果您转到项目属性和查看项目文件结构,您都找不到它)。
我设法通过将 jar 复制到项目中并像这样编辑 pom.xml 文件来添加库:
<dependency> <groupId>Bbg</groupId> <artifactId>BbgAPI</artifactId> <scope>system</scope> <version>1.0</version> <!-- <systemPath>C:\blp\BPipe\APIv3\JavaAPI\v3.7.1.1\bin\blpapi3.jar</systemPath> --> <systemPath>${basedir}\lib\blpapi3.jar</systemPath> </dependency>
代码编译文件,但在运行时出现错误:
java.lang.NoClassDefFoundError: com/bloomberglp/blpapi/SessionOptions
我的猜测是 JVM 在类路径中找不到类定义。 通常,当向 NetBeans 中的标准 java 项目添加外部库时(通过项目属性中的库部分),类路径会自动更新,但在这种情况下(通过手动编辑 pom.xml)似乎没有发生这种情况。
您知道如何修补类路径以使类在运行时可见吗? 一般来说,你知道为什么这个项目模板不允许以标准方式添加外部库吗?
谢谢
【问题讨论】:
-
最好的办法是先将它安装到您的本地仓库中。见here
-
感谢您的提示。但这假设我已经安装了 maven 并且可以从命令行运行,而我通过 netbeans 的“maven”插件使用 maven。我无法从 Windows 终端或 NetBeans 内部终端运行“mvn”。那么如何在 maven 本地存储库中安装 jar 呢?我需要从 NetBeans 外部安装 Maven 吗?这与使用 NetBeans maven 插件兼容吗?我猜外部安装会弄乱 NetBeans 中的 Maven 集成。
-
好问题。从来没有这样做过。看看this 是否有帮助
-
我按照那里的说明手动安装了工件,但这并没有解决问题。我可以成功构建项目,但在运行时仍然看不到库。你知道有没有办法在这样的项目中显式设置类路径?
-
什么意思“在运行时看不到库”?你的意思是当你运行主jar时,你得到一个NoClassDefFound?通常 Netbeans 会在 MANIFEST 中为您设置类路径。并且类路径将指向
build/dist中的lib(依赖项所在的位置)。看看这个。如果您希望将其他 jar 中的类打包到主 jar 中,则需要一个 uber jar 插件,例如 maven-assembly-plugin 或 maven-shade-plugin
标签: maven jakarta-ee web-applications netbeans libraries