当前位置: 首页 > 知识库问答 >
问题:

在NetBeans中的maven web应用程序中添加外部库

姜良哲
2023-03-14

通过将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.NoClassDeffounderRror:com/bloomberglp/blpapi/sessionoptions

我的猜测是JVM在类路径中找不到类定义。通常,在NetBeans中向标准java项目添加外部库时(通过项目属性中的libraries部分),类路径会自动更新,但在本例中(通过手动编辑pom.xml)似乎没有发生这种情况。

你知道我如何修补类路径以使类在运行时可见吗?通常情况下,您知道为什么这个项目模板不允许以标准的方式添加外部库吗?

谢谢

共有1个答案

鲁华茂
2023-03-14

因此,在检查之后,按照本文中的说明,要将依赖项添加到项目中,您还需要一些东西。如果您只是这样构建项目,如果您在“Files”窗口中查看项目,您会注意到一件事,那就是您的jar不在那里。

要将JAR复制到某个位置,您应该使用maven-dependency-plugin。类似于

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
        </execution>
    </executions>
</plugin>

这样,您应该可以在target目录中看到lib中的依赖项

然后使用maven-jar-plugin设置类路径

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>test.app.main.TestClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

如果您查看manifest,则应该会看到lib/yourdependency.jar添加到class-path属性中。您应该能够运行jar

项目的“文件”视图。test-app-main是主要的Maven项目。我主要是一个简单的java项目test-app,在这个项目中,我创建了一个jar。

如果您想在主发行版jar中包含其他jar中的类,您将需要一个类似于maven-assembly-plugin或maven-shade-plugin的插件

只需执行以下操作并构建项目,就可以使jar“可用”于webapp

  1. 在项目中,右键单击“依赖项”->“添加依赖项”
  2. 为groupId、artifactid->版本设置任意名称,单击“确定”
  3. 右键单击jar中的“依赖项”,选择“手动安装工件”。找到项目并将其添加。

这样,一旦构建了jar,就应该在web-inf/libs中为webapps提供jar

 类似资料:
  • 在NetBeans 8.2中,我如何正确地向库中添加外部.jar? 我正在做一个使用.jsp文件制作的web应用程序,运行在Tomcat服务器上(到目前为止是本地的)。我使用的是Maven,我想我对所有的第三方JAR都有问题,因为我也尝试添加JSON库,但也不起作用。我还尝试通过工具->Libraries->Add jar/folder等添加这些库,NetBeans显示它们已添加,但在我的Java

  • 我的场景如下: 我有一个部署到servlet容器的webapp.war。此webapp.war在web-inf/lib中包含以下库: lib_a.jar lib_b.jar 我还有一个库,比如lib_vendor.jar,由于许可问题,我无法在webapp/web-inf/lib中部署,所以我让客户在应用程序安装后在tomcat/lib中复制这个库。但是由于lib_vendor.jar需要在web

  • 清单合并失败:来自AndroidManifest.xml:31:9-42的属性application@icon value=(@drawable/app_icon)也存在于[com.microsoft.azure:Azure-notifications-handler:1.0.1]AndroidManifest.xml:13:9-45 value=(@drawable/ic_launcher)中。

  • 当我右键单击Maven项目并选择AddDependency选项,然后在查询中键入外部jar的名称时,找不到它。如何将外部jar添加到Maven项目中?

  • 我有一个java应用程序,需要部署在weblogic服务器中。我目前正在为该应用程序制作ear文件。我的ear文件中有一个ejb jar。我想将log4j2 jar添加到此应用程序中。所以我的文件夹结构是 目前,我已经将JAR放在APP-INF文件夹/lib和META-INF/application中。xml我把JAR放在了模块中。这是我的申请表。xml 但它不接受log4j罐子。有什么解决方案吗