Java Maven 项目找不到依赖

时间:2021-04-09 03:56:08

标签: java eclipse maven

每当我尝试以 maven install 的方式运行我的项目时,它都会创建一个完全正常的 jar 文件。这是一个swing gui应用程序。但是,当我单击 GUI 中使用此 websocket client 的按钮时,它会输出以下错误。

Exception in thread "Thread-2" java.lang.NoClassDefFoundError: com/neovisionaries/ws/client/WebSocketException
    at bot.BotFunc.run(BotFunc.java:30)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.neovisionaries.ws.client.WebSocketException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 2 more

我的 pom.xml 看起来像这样:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>HelixBot</groupId>
  <artifactId>HelixBot</artifactId>
  <version>1.1</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <mainClass>gui.GUIMain</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
  <dependency>
    <groupId>com.neovisionaries</groupId>
    <artifactId>nv-websocket-client</artifactId>
    <version>2.14</version>
  </dependency>
  </dependencies>
  <packaging>jar</packaging>
</project>

如您所见,添加了正确的依赖项,因此我不确定为什么会出现此错误。我尝试干净地构建它并检查了 .project 和 .classpath 文件。可能是因为我把它从一个普通的java项目转换成maven,但是我没有找到任何东西。如果有可能的解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果你说你运行 maven install 并得到一个“正常”的 jar 文件,那么你可能缺少将依赖项添加到 jar 的插件。所以在你运行一个简单的 mvn clean 包之后,并运行 jar 文件。我相信这可行。

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
  </plugin>