2016-04-16 37 views
2

JavaとJavaFXでソフトウェアを構築しています。 PDFレポート(DynamicReports付き)を生成し、SendGrid APIを使用して送信します。私は既にクラスパスにSendGrid API .jarファイルを追加しました。APIはJavaアプリケーションで動作しますが、JavaFXでは動作しません。

SengGridのサブクラスをインスタンス化すると、JavaFXアプリケーションがクラッシュするという問題があります。あなたが見ることができるように:

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: com/sendgrid/SendGrid$Email 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    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) 
    at Reporting.TableReport.lambda$build$0(TableReport.java:160) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassNotFoundException: com.sendgrid.SendGrid$Email 
    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) 
    ... 20 more 

を今興味深い部分は、私は非JavaFXのプロジェクトからそれを呼び出すとき、APIが完全に動作することです。さらに興味深いことに、これは非常に同じJavaFXプロジェクト内の「コンソール」メインクラスから呼び出すときにも機能します。

これまでは、私のタスク(PDFファイルを送信する)を満たす静的メソッドとしてJavaFXコードからその「コンソール」メインを呼び出そうとしました。しかし、再び、私は非常に同じ例外に遭遇する。

誰でも解決策を提案できますか? (または少なくとも回ってください)

+0

メインメソッド内でAPIを呼び出していますか? JavaFXを使用している場合は、mainの中に何も追加しないでください。代わりにstartを使用してください。 – Rafael

+0

いいえ、私はmainメソッドの中には呼び出さない。 JavaFX以外のコンテキストでAPIが完璧に動作し、JavaFXアプリケーションから呼び出す同じプロジェクトに別のパブリックメイン(JavaFX関連のコードなし)を追加したことに気づいただけですが、それもうまくいきませんでした。 – AshYuri

答えて

0

それは、Netbeansの問題であったことが判明しました。 Eclipseとまったく同じコードを使用すると、完璧に動作します。私は説明を見つけることができませんでしたが、私は私と同じ問題につまずくかもしれない誰のためにもこの答えを与えています。

関連する問題