我有两节课
package pack2;
import java.lang.*;
import java.io.*;
class eg
{
public void show()
{
System.out.println("ClassPath set to this class");
}
}
这是在C:\ NNK \ pack2中。完全合格的名称是pack2.eg
另一个程序是
import java.io.*;
import java.lang.*;
import java.net.*;
class classload
{
public static void main(String args[])
{
//have to load the eg class here. Dont know what i have done below is right or wrong
try
{
Class b=Class.forName("pack2.eg");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
try
{
eg z=(eg) b.newInstance();
}
catch(InstantiationException l)
{
l.printStackTrace();
}
z.show();
System.out.println("b.getName()="+b.getName());
}
}
该程序位于C:\ NNK
我必须在这里加载eg程序。我试图在Oracle中学习它,看到它的其他相关堆栈溢出问题。
Dynamically loading a class in Java
但是它没有用,但我不断收到错误b是未知,而z是未知符号。
还有一种使用目录文件名的方法(例如:C:\ NNK \ pack2 \ eg)来加载类
最佳答案
这是一个范围问题。将b
和z
的声明移到第一个try
之外,如下所示:
public static void main(String args[])
{
//have to load the eg class here. Dont know what i have done below is right or wrong
Class b;
eg z;
try
{
b=Class.forName("pack2.eg");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
try
{
z=(eg) b.newInstance();
}
catch(InstantiationException l)
{
l.printStackTrace();
}
z.show();
System.out.println("b.getName()="+b.getName());
}
您可能还必须制作
pack2.eg
public