我有一個由web開始運行的javafx應用程序。在我的fx應用程序中,我嘗試使用ClassLoader加載類,如下面的代碼所示。傳遞的參數是像「com.example.project.abcd」從另一個類加載類在同一個jar在java web啓動失敗
public final static List<Class<?>> find(final String scannedPackage)
{
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
final String scannedPath = scannedPackage.replace(DOT, SLASH);
final Enumeration<URL> resources;
try {
resources = classLoader.getResources(scannedPath);
} catch (IOException e) {
throw new IllegalArgumentException(String.format(BAD_PACKAGE_ERROR, scannedPath, scannedPackage), e);
}
final List<Class<?>> classes = new LinkedList<Class<?>>();
while (resources.hasMoreElements()) {
final File file = new File(resources.nextElement().getFile());
classes.addAll(find(file, scannedPackage));
}
return classes;
}
現在我不能當我運行得到的所有類目前裏面的「com.example.project.abcd」包一包的名稱它通過java web開始,但通過IDE它工作正常。
我使用的是JDK 7,JavaFX的2
按照http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/faq.html#s211 Thread.currentThread()。getContextClassLoader()應該工作正常,但它不是!
試圖在網上搜索/谷歌搜索,但徒勞無功。檢查http://lopica.sourceforge.net/faq.html#customcl以及建議使用URLClassLoader嘗試。但是,這並沒有工作(雖然不知道應該傳遞給參數'網址')
任何幫助都是多少apreciated。
嘗試從'resource.nextElement()'登錄URL。 – talex 2014-08-29 10:29:19
如何做到這一點?當應用程序通過IDE運行時,我做到了。它給了我一個文件的URL。但在網絡啓動方面呢?如何通過web start啓動應用程序時進行調試?如果我使用sysout將它寫入JWS控制檯? – Sudheendra 2014-08-29 11:02:02
我不知道JWS控制檯,但你可以登錄到文件。很多日誌庫如slf4j或log4j。 – talex 2014-08-29 11:30:49