从您不在旁边使用自定义类加载器的一(几)英里处可见
Class.forName
由于已加载当前类的类加载器
MyProgram尝试加载org.eclipse.swt.graphics.Point
,因此发生ClassNoDefFoundError 。
您需要通过Class.forName加载另一个类(称为启动器),然后从那里开始-实现一些接口(即使是runnable也可以)并调用它。
编辑
怎么做,一个简单的场景。
1.创建另一个名为
mp.loader.LauncherRunnable的类。
public class Launcher implements Runnable{public void run(){ org.eclipse.swt.graphics.Point pt = new org.eclipse.swt.graphics.Point(0, 0); //whatever, start from here.}}2.将其放在另一个名为swt-loader.jar的jar中。
在MyProgram类中使用:
loader.addJarToClasspath("swt-loader.jar");Runnable r = (Runnable) Class.forName("mp.loader.Launcher", true, loader);r.run();//there you have


