簡體   English   中英

執行jar文件:原因:java.lang.ClassNotFoundException:org.springframework.context.ApplicationContext

[英]executing jar file: Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext

我創建了一個Maven項目。 輸入以下內容后:mvn clean package一切正常,我在目標中看到了我的jar文件。 但是,如果我單擊該文件,則會收到以下錯誤消息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/c
ontext/ApplicationContext
Caused by: java.lang.ClassNotFoundException: org.springframework.context.Applica
tionContext
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: comt.test.Test. Program will exit

我可以在Eclipse下運行該項目,並且可以正常運行,但是jar文件不起作用。

這是清單的內容:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Build-Jdk: 1.6.0_23
Main-Class: com.stlpo.App
Class-Path: commons-httpclient-3.1.jar commons-codec-1.2.jar h2-1.2.138.jar 
commons-lang-2.5.jar spring-core-3.0.3.RELEASE.jar spring-asm-3.0.3.RELEASE.jar co
 mmons-logging-1.1.1.jar spring-context-3.0.3.RELEASE.jar spring-beans
 -3.0.3.RELEASE.jar spring-expression-3.0.3.RELEASE.jar spring-orm-3.0
 .3.RELEASE.jar spring-tx-3.0.3.RELEASE.jar spring-aop-3.0.3.RELEASE.j
 ar aopalliance-1.0.jar spring-jdbc-3.0.3.RELEASE.jar spring-test-3.0.
 3.RELEASE.jar cglib-nodep-2.2.jar logback-core-0.9.24.jar logback-cla
 ssic-0.9.24.jar slf4j-api-1.6.0.jar hibernate-annotations-3.5.4-Final
 .jar hibernate-core-3.5.4-Final.jar antlr-2.7.6.jar commons-collectio
 ns-3.1.jar jta-1.1.jar hibernate-commons-annotations-3.2.0.Final.jar 
 hibernate-jpa-2.0-api-1.0.0.Final.jar hibernate-entitymanager-3.5.4-F
 inal.jar cglib-2.2.jar asm-3.1.jar javassist-3.9.0.GA.jar opencsv-2.1
 .jar jfreechart-1.0.13.jar jcommon-1.0.16.jar commons-beanutils-1.8.3
 .jar beansbinding-1.2.1.jar poi-3.6.jar log4j-1.2.13.jar
  poi-ooxml-3.6.jar poi-ooxml-schemas-3.6.jar xmlbeans-2.3.0.jar stax-
 api-1.0.1.jar geronimo-stax-api_1.0_spec-1.0.jar dom4j-1.6.1.jar xml-
 apis-1.0.b2.jar commons-dbcp-1.4.jar commons-pool-1.5.4.jar TableLayo
 ut-20050920.jar

在此先感謝您的幫助。

構建JAR時,它只包含您的類。 它不包含項目依賴的所有其他庫。 (這樣做是可行的,但這並不常見,而且通常不建議這樣做。)要在依賴於Spring的JAR中運行一個類,必須確保將Spring放在類路徑上,方法是將類路徑傳遞給java可執行文件(doesn'如果使用-jar參數,則-jar工作),也可以通過在JAR的清單文件中添加“ Class-Path”屬性來實現。 當然,不僅是春天。 您必須為項目所依賴的每個jar都包含一個類路徑條目。

看到另一篇關於相同問題的文章您需要為依賴項(在您的情況下是春季)創建一個classPath(eclipse會自動為您刪除,這就是為什么您不會從eclipse破壞項目的原因)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>fully.qualified.MainClass</mainClass> 
                <addClasspath>true</addClasspath>
                <!-- use class path prefix if your dependencies are out side the jar)
                <classpathPrefix>lib/</classpathPrefix> -->          
            </manifest>

            <manifestEntries>
                <Class-Path>conf/</Class-Path>
            </manifestEntries>
        </archive>

    </configuration>
</plugin>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM