URLClassLoader interprets path as package
Hi,
I have to load a class from another directory. This class is in no package! I specify a path for the URLClassLoader but the compiler interprets this as package for the class and of course complains that the package is wrong.
the code:
publicclass Main{
publicstaticvoid main(String[] cmdArgs){
// load scanner class
URL[] urls ={new File("/home/bace/extern/").toURI().toURL()};
ClassLoader urlClassLoader =new URLClassLoader(urls);
Class scannerClass = urlClassLoader.loadClass("xyLexer");
// get scanner constructor
Class[] argTypes =new Class[1];
argTypes[0] = CharStream.class;
Constructor scannerConstructor = scannerClass.getConstructor(argTypes);
// create scanner object by constructor
Object[] args =new Object[1];
args[0] =new FileStream("/home/bace/extern/input.txt");
Object scannerObj = scannerConstructor.newInstance(args);
// create token stream from scanner
TokenStream ts =new CommonTokenStream((Lexer)scannerObj);
}
}
I got the following error:
Exception in thread"main" java.lang.NoClassDefFoundError:
xyLexer (wrong name: extern/xyLexer)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at Main.main(Main.java:33)
What can I do that the whole path is interpreted as a path, and not as a package structure (after "/home/bace/")?
Thanks for any help in advance!!! Best, Markus.

