当前位置: 首页 > 面试题库 >

Maven:主线程中的NoClassDefFoundError

卫皓
2023-03-14
问题内容

我目前正在构建一个小的Apache-Mina Server应用程序。我正在使用Maven进行构建。当我尝试运行jar时,出现以下错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/mina/filter/codec/ProtocolCodecFactory 
Caused by: java.lang.ClassNotFoundException: org.apache.mina.filter.codec.Protoc  olCodecFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: de.fr1zle.gpsserver.GpsServer. Program will exit.

在Eclipse中运行不是问题。

生成的清单看起来像这样:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: fr1zle
Build-Jdk: 1.6.0_23
Main-Class: de.fr1zle.gpsserver.GpsServer
Class-Path: commons-lang-2.1.jar plexus-utils-1.1.jar junit-4.8.2.jar 
 log4j-1.2.14.jar slf4j-jdk14-1.5.11.jar slf4j-api-1.5.11.jar antlr-2.
 7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar hibernate-commons
 -annotations-3.2.0.Final.jar hibernate-jpa-2.0-api-1.0.0.Final.jar jt
 a-1.1.jar hibernate-annotations-3.5.6-Final.jar hibernate-core-3.5.6-
 Final.jar mysql-connector-java-5.1.15.jar mina-core-2.0.3.jar

这是我的pom.xml(的一部分):

<groupId>de.fr1zle.gpsserver</groupId>
    <artifactId>GPSServer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>GPSServer</name>
    <packaging>jar</packaging>
    <description>Tracks location of GPS modules and the information they submit.</description>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>de.fr1zle.gpsserver.GpsServer</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

我在这里做错了什么?


问题答案:

从Eclipse运行时,Eclipse会为您配置类路径。因此,您不会遇到此问题。

在Eclipse之外运行时,您需要通过提供这些jar文件的路径(即file:/dev/libs/mina- core-2.0.3.jar在中)MANIFEST.MF或通过-cp在执行应用程序时添加选项来设置CLASSPATH
。不要忘记清单文件中类路径中的条目是相对于它们所嵌入的JAR而言的,还是相对于本地文件目录的绝对路径。

您的另一种选择是使用maven程序集插件jar-with-
dependencies
将其打包为一个jar 。



 类似资料:
  • 问题内容: 该代码正在编译,但是当我们尝试执行该代码时,给出了“线程“ main”中的异常” Java.lang.NoSuchMethodError:main“ 问题答案: 该函数应这样声明

  • 问题内容: 我需要在Java中进行一次练习的帮助,也许我会在2小时内停留在此错误上。任何帮助都会很棒。 和: 我无法在Proizvod类的变量“ proizvodi”上输入字符串“ imer”或int“ cenar”。 有帮助吗?为什么我会收到此错误?谢谢! 问题答案: 扫描程序抛出此异常,以指示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

  • 问题内容: 我已经进行了大约一个小时的工作,并且对stackoverflow进行了问答,但是我没有找到解决问题的建议方案。很抱歉,如果这是重复的,但是找不到解决我特定问题的答案的任何重复问题。 我试图第一次从终端编写和编译Java程序(直到这一点为止,我一直在使用Eclipse for Java和VIM进行其他所有操作,但是我觉得是时候完全使用VIM了)。这是我当前的HelloWorld代码: 我

  • 我已经阅读了与此问题相关的所有堆栈溢出问题。我对此有了一些想法,但它不能帮助我解决这个问题。 我已使用服务帐户进行授权。因为我不想为我的用户显示授权屏幕。因此,我已经创建了服务帐户,并在GoogleAPI控制台中启用了域范围的委托权限。 我需要以编程的方式在用户的Google课堂中创建课程。我已按照 Java 快速入门使用 OAuth 客户端 ID 和 OAuth 客户端密钥。完成后,授权令牌已存

  • 我正在为我的公司开发一个“多层”GUI来监控温度和状态。因为我是python编程新手,所以我的代码需要一些帮助。 代码由类构成。“Main”初始化主窗口(tkinter)并创建其他要显示的帧(如果需要)。除“canvas”外,其他每个类都是一个框架,它将显示不同的内容。 每个画布都包含一个图像和一些文本/可变文本。线程用于从数据库获取数据并更改画布中的文本。 每次线程访问画布并尝试更改文本或创建新

  • 任何帮助都将不胜感激。