2013-02-18 10 views
1

моя проблема в том, что мой код, который работал на Java6, больше не работает. Поскольку мое приложение должно загрузить Jar во время выполнения (плагинов), я написал myselt простой класс, производный от URLClassLoader как этотJava 7: использование URLClassLoader больше не работает

public class MyClassLoader extends java.net.URLClassLoader { 

/** Creates a new instance of URLClassLoader */ 
public MyClassLoader(java.net.URL url) 
{ 
    super(new java.net.URL[]{url},ClassLoader.getSystemClassLoader()); 
} 

public void addURL(java.net.URL url) 
{ 
    super.addURL(url); 
}} 

Так что, если я хочу загрузить баночку, я просто называю addURL (pathToJar) и нагрузку, класс через

Class.forName(myClass, true, myClassLoader) 

Это работало как шарм, работающий на Java6. Теперь я решил создать автономное приложение Java в Java7. Когда я запускаю приложение, банк также загружается во время выполнения, но если есть класс, внутри которого происходит класс, находящийся внутри пути к классам (а не в банке плагина), я получаю исключение ClassCastException.

Итак, я думаю, что что-то изменилось в Java7. В настоящее время я использую Java7_u13 на OSX. Может ли кто-нибудь дать мне подсказку о том, что я должен сделать, чтобы вернуть прежнее поведение? Поиск в сети еще не помог мне.

Большое спасибо заранее.

Привет, -chris-

ответ

3

Тем временем я нашел решение моей проблемы. Я просто использовал «неправильный» загрузчик классов в качестве родителя. Теперь все работает отлично, если я заменить

super(new java.net.URL[]{url},ClassLoader.getSystemClassLoader()); 

с

super(new java.net.URL[]{url},MyClassLoader.class.getClassLoader()); 

Привет, -chris-