2016-06-29 6 views
1

リフレクションを使用して、実行時にjarファイルに動的にリンクしようとしています。私はこの例外を取得するには、メインクラスと私はメソッドを呼び出すようにしようとする場合を除い方法とそのすべての作業罰金のための宣言を作成しました:Java reflection ClassNotFound例外

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at com.myapp.languagedetectorreflection.LangDetectReflectionManager.CreateDetectorFactory(LangDetectReflectionManager.java:73) 
    at com.myapp.sharedlibrary.LanguageManager.LanguageDetector.<init>(LanguageDetector.java:40) 
    at com.myapp.sharedlibrary.LanguageManager.LanguageDetector.getInstance(LanguageDetector.java:50) 
    at com.myapp.tikamanager.MetaParser.<init>(MetaParser.java:66) 
    at com.myapp.langtest.LangTest.main(LangTest.java:85) 
Caused by: java.lang.NoClassDefFoundError: org/reflections/Reflections 
    at com.cybozu.labs.langdetect.DetectorFactory.<init>(DetectorFactory.java:77) 
    ... 9 more 
Caused by: java.lang.ClassNotFoundException: org.reflections.Reflections 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at com.myapp.languagedetectorreflection.ParentLastURLClassLoader.loadClass(ParentLastURLClassLoader.java:70) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

ラインを質問である: final Reflections reflections = new Reflections(null, new ResourcesScanner());

私は、それがロードされることを望んでいるが、それは助けにならないと主なアプリケーションへの直接の依存として反射jarを宣言しようとしました。他に何をすべきかわからないのですか?依存関係を読み込むためにリフレクションを使用するときに、トリックがありますか?

+0

これらのクラスローディングに関する質問は最近すべてなぜですか? JVMクラスローダーは改善されません。これを使って。 – duffymo

+0

org.reflectionsを持つjarファイルがないようです。実行時のクラスパスのリフレクションランタイムクラスパス – ControlAltDel

+0

@ControlAltDelを確認してください.Maven-dependancy-pluginを使用していたことを忘れていました.jarファイルを依存ディレクトリにコピーする必要がありました。 –

答えて

2

がorg.reflections.Reflectionsの依存関係を解決する「Java仮想マシン(JVM)は、特定のクラスをロードしようとすると、指定したクラスがクラスパスに見つからない場合ClassNotFoundExceptionがスローされます」。必要なjarファイルをダウンロードし、プロジェクトのクラスパスに追加してください。あるいは、mavenを使用することもできます。

関連する問題