java.lang.ClassNotFoundException 在类加载器上
java.lang.ClassNotFoundException on classloader
这段代码的想法是接收一些 java 文件,这些文件扩展了我在服务器上的另一个 java 文件。
目前我忽略了明显的安全问题,但代码如下:
private boolean isTheFileIamLookingFor(String name,String path,String nameOfFatherClass) {
System.out.println("NAME IS "+name); //prints correct class name
System.out.println("PATH IS "+path); //prints correct path
if(Files.getFileExtension(path).equals("class"))
{
try {
ClassLoader classLoader = this.getClass().getClassLoader();
Class<?> loadedMyClass = classLoader.loadClass(String.format("%s.class", name));
Class<?> c[] = loadedMyClass.getInterfaces();
if(Arrays.asList(c).contains(Class.forName(nameOfFatherClass)))
{
return true;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return false;
}
但是我收到了错误
java.lang.ClassNotFoundException: MyClass.class
但事实是文件在那里。
关于为什么找不到 class 的任何想法?
进口java.util.Arrays;
导入 org.apache.commons.io.FilenameUtils;
public class 我的测试 {
public static void main(String[] args) {
mytest m = new mytest();
System.out.println(m.isTheFileIamLookingFor("ArrayList", "java.util.",
"List"));
}
public boolean isTheFileIamLookingFor(String name, String path,
String nameOfFatherClass) {
System.out.println("NAME IS " + name); // prints correct class name
System.out.println("PATH IS " + path); // prints correct path
if (!FilenameUtils.getExtension(path).equals("class"))
{
try {
ClassLoader classLoader = this.getClass().getClassLoader();
System.out.println(String.format("%s.class", name));
Class<?> loadedMyClass = classLoader.loadClass(path + name);
Class<?> c[] = loadedMyClass.getInterfaces();
if (Arrays.asList(c).contains(
Class.forName(path + nameOfFatherClass))) {
return true;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return false;
}
}
这段代码的想法是接收一些 java 文件,这些文件扩展了我在服务器上的另一个 java 文件。
目前我忽略了明显的安全问题,但代码如下:
private boolean isTheFileIamLookingFor(String name,String path,String nameOfFatherClass) {
System.out.println("NAME IS "+name); //prints correct class name
System.out.println("PATH IS "+path); //prints correct path
if(Files.getFileExtension(path).equals("class"))
{
try {
ClassLoader classLoader = this.getClass().getClassLoader();
Class<?> loadedMyClass = classLoader.loadClass(String.format("%s.class", name));
Class<?> c[] = loadedMyClass.getInterfaces();
if(Arrays.asList(c).contains(Class.forName(nameOfFatherClass)))
{
return true;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return false;
}
但是我收到了错误
java.lang.ClassNotFoundException: MyClass.class
但事实是文件在那里。 关于为什么找不到 class 的任何想法?
进口java.util.Arrays; 导入 org.apache.commons.io.FilenameUtils;
public class 我的测试 {
public static void main(String[] args) {
mytest m = new mytest();
System.out.println(m.isTheFileIamLookingFor("ArrayList", "java.util.",
"List"));
}
public boolean isTheFileIamLookingFor(String name, String path,
String nameOfFatherClass) {
System.out.println("NAME IS " + name); // prints correct class name
System.out.println("PATH IS " + path); // prints correct path
if (!FilenameUtils.getExtension(path).equals("class"))
{
try {
ClassLoader classLoader = this.getClass().getClassLoader();
System.out.println(String.format("%s.class", name));
Class<?> loadedMyClass = classLoader.loadClass(path + name);
Class<?> c[] = loadedMyClass.getInterfaces();
if (Arrays.asList(c).contains(
Class.forName(path + nameOfFatherClass))) {
return true;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return false;
}
}