【发布时间】:2011-08-13 20:03:02
【问题描述】:
嗨,我有一个将类文件加载到我的程序中的代码。当我从 Eclipse 运行/调试它时,我总是从我的 bin 目录中选择类文件。当我将程序编译成 JAR 文件时,加载不起作用。 这些是加载类文件的行
public void load_dynamic_tag(String file_path)
throws MalformedURLException, ClassNotFoundException,
InstantiationException, IllegalAccessException {
File f = new File(file_path);// some folder's path
URI uri = f.toURI();
URL url = uri.toURL();
URL[] urls = new URL[] { url };
// create a new class loader for this directory
ClassLoader cl = new URLClassLoader(urls);
// load the class file "MyAlgo.class"
String name = f.getName();
name = name.substring(0, name.lastIndexOf("."));
name = "Tagging." + name;
@SuppressWarnings("unchecked")
Class<TaggingStrategy> c = (Class<TaggingStrategy>) cl.loadClass(name);
// TaggingStrategy tag=c.newInstance();
tag = c.newInstance();
}
这是我得到的错误
java.lang.ClassNotFoundException: Tagging.Tag_by_lenght_filename
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at Tagging.Tags_all.load_dynamic_tag(Tags_all.java:233)
at Command.LoadTagCommandExecutor.execute(LoadTagCommandExecutor.java:24
)
at GUI.DropBox$2.handleEvent(DropBox.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at GUI.DropBox.showGUI(DropBox.java:168)
at GUI.Try_control$5.handleEvent(Try_control.java:135)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at GUI.Try_control.<init>(Try_control.java:161)
at GUI.NewSWTApp$2$1$2.run(NewSWTApp.java:121)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at Service.Main.main(Main.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
我做错了什么? tnx分配
【问题讨论】:
标签: java class dynamic classloader