3

cdk の pom.xml に maven の依存関係を追加しましたが、jar ファイルの実行時にクラスが見つからないというエラーが 1 つ発生します。

dyna218-128:spark4vs laeeqahmed$ java -cp target/spark4vs-1.0-SNAPSHOT.jar se.uu.farmbio.spark4vs.RunPrediction
Exception in thread "main" java.lang.NoClassDefFoundError: org/openscience/cdk/interfaces/IAtomContainer
Caused by: java.lang.ClassNotFoundException: org.openscience.cdk.interfaces.IAtomContainer
    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:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

POM.XML は次のとおりです。

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
</dependency>

<dependency><!-- SVM depedency -->          
        <groupId>tw.edu.ntu.csie</groupId>
        <artifactId>libsvm</artifactId>
        <version>3.1</version>
</dependency>

<dependency>
        <groupId>org.openscience.cdk</groupId>
        <artifactId>cdk</artifactId>
        <version>1.4.7</version>
</dependency>

    <repositories>
         <repository>
                   <id>3rdparty</id>
                   <url>https://maven.ch.cam.ac.uk/content/repositories/thirdparty/</url>
             </repository>
    </repositories>
4

1 に答える 1

0

Maven の依存関係は、プロジェクトを構築するためのものです。JAR id がパッケージ化されている場合、Maven Jar プラグインはそれを使用していません。したがって、追加の作業なしでは実行できません。

ただし、これには多くの解決策があります。たとえば、Maven One Jar Plugin を使用してすべての依存関係を JAR にパッケージ化できますが、これは常に使用できるとは限りません http://onejar-maven-plugin.googlecode.com/svn/mavensite/usage.html

jar 依存関係のあるアーカイブを作成できます http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies

Maven Shade Plugin http://maven.apache.org/plugins/maven-shade-plugin/を使用して、すべての jar を 1 つにマージできます 。

于 2013-03-20T17:34:50.977 に答える