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

Maven项目生成但在运行时找不到类

慕容修伟
2023-03-14

我有这个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 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>suman</groupId>
    <artifactId>suman</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>suman</name>
    <url>http://maven.apache.org</url>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>


        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>


    </dependencies>
</project>

我有一个主要文件:

package suman;

import java.net.*;
import java.io.*;
import com.google.code.gson.*;  // can't find this lib


public class App {
    public static void main(String[] args) {

        Gson gson = new Gson();
        gson.toJson(1);            

    }
}
$ mvn install -DskipTests
import com.google.gson.*;

然后它进行编译,但如果使用java-jar运行它,则会出现以下运行时错误:

线程“main”java.lang.NoClassDeffounder中出现异常错误:com/google/gson/gson at suman.app.main(app.java:17)原因:java.lang.ClassNotFoundexception:com.google.gson.gson at java.base/jdk.internal.loader.builtInclassLoader.loadClass(builtInclassLoader.java:583)at java.base/jdk.internal.loader.classLoader.$appClassLoader.loadClass(classLoader.java:190)at java.base/java.lang.ClassLoader.loadClass(classLoader.java:499)...还有1个

共有1个答案

訾淇
2023-03-14

很可能您的本地Maven存储库没有用于以下内容的jar文件:

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>

试着从~/.m2/repository/com/google/code/gson/gson/2.8.5目录往下看。

如果没有类似gson-2.8.5.jar的jar文件-简单步骤删除整个目录。

顺便提一下:在运行时,只要构建jar(而不是war或ear),就必须在类路径中拥有所有需要的jar文件。作为Maven的替代方法,您可以构建“胖罐子”,所有依赖项的所有类都将在那里,但如果准备好了,它将是一个非常大的胖罐子。:-)

 类似资料:
  • 一切都很顺利,重新启动后,我下载并执行gdx-setup.jar,填充表单,并导入Eclipse。 没有错误,没有警告,当我尝试运行桌面。(右键单击桌面项目,运行为->Java应用程序)。 我有个错误 效果很好。只有local一个给出错误,也是isLocal和isExternal返回true。 我尝试了很多组合,比如、、、和。 图像badlogic.jpg就在那里,我把它放在多个地方以确保。 现在

  • 我想创建一个在eclipse中使用Lifeay-maven-plugin的Liveay插件portlet,但每次我尝试这样做时,我都会遇到这个错误:

  • 我做了一个简单的项目,其中包含一些测试,我希望能够在其他计算机上启动测试。我使用runas构建了这个项目- 错误:在com类中找不到Main方法。实例TestPurchase,请将main方法定义为:publicstaticvoidmain(String[]args)或JavaFX应用程序类必须扩展JavaFX。应用应用 据我所知,TestNG不需要任何主方法,因为有注释。这就引出了一些问题: 我

  • 我在TextBoxBinding.java中得到以下错误

  • 请找到我的pom.xml 4.0.0 @runwith(cucumber.class)@cucumberoptions(features={“c:\users\rishabh patel\eclipse-workspace\cucumberreports\feature”},glue={“stepdefinition”},plugin={“pretty”,“json:target/cucumber