2017-09-16 7 views
0

、私は私の不和ボットからClassNotFoundExceptionを持っている:私はスコープの中にコンパイルしているようのJavaのClassNotFoundException(私はスコープのmavenでコンパイル使用)ので

Error: A JNI error has occurred, please check your installation and try 
again 
Exception in thread "main" java.lang.NoClassDefFoundError: 
sx/blah/discord/handle/obj/IChannel 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
at java.lang.Class.getMethod0(Class.java:3018) 
at java.lang.Class.getMethod(Class.java:1784) 
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: sx.blah.discord.handle.obj.IChannel 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 7 more 

これは、起こっていないshoud Maven。私も明示的にスコープのコンパイルにそれを置く:

<dependencies> 
    <dependency> 
     <groupId>com.github.austinv11</groupId> 
     <artifactId>Discord4J</artifactId> 
     <version>dev-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.16</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 
+0

Mavenはビルドツールです。クラスをコンパイルしてパッケージ化します。しかし、それはそれを実行しません。どのようにコードを実行しますか? –

+0

java -cp JarName.jar com.hallowizer.package.Main – Hallowizer

+1

あなたの瓶はどうやって作りましたか? – Oleg

答えて

0

のApache Mavenのは、のビルドツールである

  • は、プロジェクトの依存関係(サードパーティ製の瓶など)を取得するリモートリポジトリからにローカルマシンは、pom.xmlファイルで宣言された依存関係に基づいています。
  • コンパイル Javaクラス、あなたの場合は

、あなたののpom.xmlは、すべての依存関係をフェッチし、ローカルコンピュータ上に置きます。 Eclipseの組み込みMavenプラグインは、それらのJarファイルをプロジェクトのクラスパスに入れます。これが、Eclipse IDE内でアプリケーションを実行できた理由です。

あなたは、Eclipse IDE外でアプリケーションを実行したい場合は、いくつかの方法でそれを行うことができます。

  1. は、アプリケーションクラスパスで、例えば、すべての依存関係(JARファイル)を入れ、

    $ java -cp ".:./jars/a.jar; ../jars/b.jar" myClass

  2. Mavenのシェードプラグインを使用してユーバージャーを作成します。 HereはShadeプラグインの使用に関するドキュメントです。
+0

ありがとう!それはとても役に立ちました、私は今すぐ働いているボットを持っています! – Hallowizer

関連する問題