Javaプログラムを実行しようとすると、次のエラーが発生します。
Exception in thread "main" Java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
at com.inin.dynamotransfer.DynamoTransfer.importData(DynamoTransfer.Java:133)
at com.inin.dynamotransfer.DynamoTransfer.main(DynamoTransfer.Java:67)
Caused by: Java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:366)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:355)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:354)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:425)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:358)
... 2 more
〜/ .m2/repository/com/fasterxml/jackson/core/jackson- [packagename] /2.4.0の下のMavenリポジトリに、Jacksonアノテーション、databind(ObjectMapperを含む)、およびコアJARがあります。ここに私のpom.xmlの依存関係セクションがあります:
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
ここに私のCLASSPATHがあります:
:/Users/myusername/Library/Java/Extensions:/Library/Java/Extensions:/Users/myusername/.m2/repository
mavenはこれらのJARについてすべて知っています-emを取得する場所、emを配置する場所など-しかしJava自体が必要なクラスを見つけられないようです。 ?ありがとう!
mavenライフサイクルの目標を再試行してください:
mvn clean install -U
デフォルトのmavenプラグインは、依存関係のあるファットjarをビルドしません。
依存関係にバンドルされたjarをビルドしてJava -jar
で実行できるようにするには、 maven-Assembly-plugin を使用できます。 xxx-jar-with-dependencies.jar
という名前のjarファイル。
こちらがサンプルですpom.xml
<build>
<plugins>
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.example.yourMain</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-Assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
これでjarを実行できるはずです
Java -jar xxx-jar-with-dependencies.jar