0

Maven インストールを使用して jar を作成しました。コマンドを使用して jar を実行するとjava -jar MyJar.jar 、例外が発生しました。以下はスタックトレースです。

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
        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)

pom.xml にすべての依存関係があり、メイン クラスをスタンドアロン アプリケーションとして正常に実行しました。

次に、jar の内容を抽出しました。マニフェスト ファイルにはクラスパスにすべての jar が含まれていますが、依存関係のある jar が含まれていないことに驚きました。以下は、生成されたマニフェスト ファイルです。

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Anand Jain
Build-Jdk: 1.6.0_38
Main-Class: com.hcentive.simulator.cms.beq.response.util.Test
Class-Path: spring-jdbc-3.0.6.RELEASE.jar spring-beans-3.0.6.RELEASE.j
 ar spring-core-3.0.6.RELEASE.jar spring-tx-3.0.6.RELEASE.jar spring-c
 ontext-3.0.6.RELEASE.jar spring-expression-3.0.6.RELEASE.jar spring-a
 sm-3.0.6.RELEASE.jar cglib-nodep-2.2.jar hibernate-jpa-2.0-api-1.0.1.
 Final.jar spring-aop-3.0.6.RELEASE.jar aopalliance-1.0.jar spring-bat
 ch-core-2.1.7.RELEASE.jar xstream-1.3.jar xpp3_min-1.1.4c.jar jettiso
 n-1.1.jar spring-batch-infrastructure-2.1.7.RELEASE.jar commons-beanu
 tils-1.8.3.jar commons-logging-1.1.1.jar hibernate-core-3.5.1-Final.j
 ar antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar xml-ap
 is-1.0.b2.jar jta-1.1.jar slf4j-api-1.5.8.jar commons-dbcp-1.2.2.jar 
 commons-pool-1.3.jar commons-io-1.3.2.jar commons-lang-2.5.jar hsqldb
 -1.8.0.7.jar aspectjrt-1.6.8.jar aspectjweaver-1.6.8.jar log4j-1.2.14
 .jar

誰か助けてくれませんか?

4

2 に答える 2

2

Maven を使用してすべての依存関係を含む jar を構築するには、追加できます...

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.MyMain</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-jar-with-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

また、依存関係ごとにスコープが正しく設定されていることを確認する必要があります。

于 2013-01-30T06:07:56.003 に答える
-2

java -classpath jar1;jar2;jar3;jar4;xml1;xml2;....; jar ExceutableJar.jar

私はそれがたくさんのjarファイルを持っているかもしれないと信じています

Unix の場合は、コマンド全体をメモ帳ファイルにコピーし、バッチ (.bat) またはシェル スクリプト (.sh) として保存することをお勧めします。

そのため、コマンドを繰り返す代わりに、1 つのファイルで簡単に jar を実行できます。

于 2013-01-30T05:47:34.963 に答える