请问Class.forName的参数可不可以是绝对路径! 必须用相对于ClassPath下的Class包括package 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不可以,我同意“必须用相对于ClassPath下的Class包括package”观点!(个人意见) 请问,ClassPath是什么?是不是通过Windows环境设置的! 是的。你找些Java入门书都有介绍的。 Class.forName 参数应该是类名,又不是文件名,用什么绝对路径? 不可以,看《Core Java》吧 绝对路径可以,不过Class.forName("c:\javatry.cls")应该尽可能避免,因为这只是windows下面的表示法,到了linux下面就出错了。ps:System类有取路径分隔符的方法,用它吧。 哈,没注意看,扩展名居然是'.cls'? 你想用这样的方法来操作excel吗???晕。类文件必须是一个.class文件。 excel文件的扩展名不是*.exl? 我要批评你们,就在这里瞎猜,写个程序测试一下不就行了// ForNameTest.javapublic class ForNameTest { public static void main( String[] args ) throws Exception { try {// Class c = Class.forName( "c:\\java\\ForNameTestClass.class" );// Class c = Class.forName( "c:\\java\\ForNameTestClass" ); Class c = Class.forName( "ForNameTestClass" ); Object fntc = c.newInstance(); System.out.println( fntc ); } catch( ClassNotFoundException cnfe ) { System.out.print( cnfe.toString() ); } }}// ForNameTestClass.javapublic class ForNameTestClass { public String toString() { return "ForName Test Class"; }}除了第三种方法,Class c = Class.forName( "ForNameTestClass" );其它方法都抛出ClassNotFoundException Class.forName("c:\javatry.cls")这样写当然不行 不知道你为什么需要用绝对路径。应该用包的概念来代替绝对路径。至少在win下应该这么做。xIUX下不知道怎么弄,请高手指点一下。 这样是不行的,如果行的话那URLClassLoader的构造函数为什么需要URL[]参数?情况是这个样子的,举个例子:载入D:\proj\nar\classes\programmer\richardskong\nar\utils\ArrayEnumeration.class的类programmer.richardskong.nar.util.ArrayEnumeration需要这样:ClassLoader loader = new URLClassLoader(new URL[]{new URL("file:///D:/proj/nar/classes/")}); //注意这个URLClass cls = loader.loadClass("programmer.richardskong.nar.util.ArrayEnumeration");实际上URL就是上面说的CLASSPATH. class.forName(),这个方法找寻类时是在classpath中寻找,并没有在path 中寻找,道理明白了,我想大家自然该明白所谓的绝对路径能不能取道了吧 You had better learn some basis knowlege of java java限制下载文件大小 求JAVA代码片段~~~~~~~~~关于从数据库取值 求关于字符串的优秀算法....欢迎参与! 求写几个SQL语句,在线等 有关RCP工程中 打开xml文件的问题 请高手帮忙 java中关于比较的问题(在线跪求) 没可用分了啊!郁闷!关于String到底生成几个对象的终极解释!!用事实说话! 如何让键盘什么都不做!!!! 解难释疑:SVF账票的生成PDF文件? 我想从键盘接受一个用户输入的数据给一个变量,这段代码如何写? 怎么删除JDialog左上角的图标?
相对于ClassPath下的Class包括package”观点!(个人意见)
你找些Java入门书都有介绍的。
Class.forName("c:\javatry.cls")
应该尽可能避免,因为这只是windows下面的表示法,到了linux下面就出错了。
ps:System类有取路径分隔符的方法,用它吧。
类文件必须是一个.class文件。
// ForNameTest.java
public class ForNameTest {
public static void main( String[] args ) throws Exception {
try {
// Class c = Class.forName( "c:\\java\\ForNameTestClass.class" );
// Class c = Class.forName( "c:\\java\\ForNameTestClass" );
Class c = Class.forName( "ForNameTestClass" );
Object fntc = c.newInstance();
System.out.println( fntc );
} catch( ClassNotFoundException cnfe ) {
System.out.print( cnfe.toString() );
}
}
}
// ForNameTestClass.java
public class ForNameTestClass {
public String toString() {
return "ForName Test Class";
}
}
除了第三种方法,Class c = Class.forName( "ForNameTestClass" );
其它方法都抛出ClassNotFoundException
这样写当然不行
情况是这个样子的,举个例子:
载入D:\proj\nar\classes\programmer\richardskong\nar\utils\ArrayEnumeration.class的类programmer.richardskong.nar.util.ArrayEnumeration需要这样:
ClassLoader loader = new URLClassLoader(new URL[]{new URL("file:///D:/proj/nar/classes/")}); //注意这个URL
Class cls = loader.loadClass("programmer.richardskong.nar.util.ArrayEnumeration");
实际上URL就是上面说的CLASSPATH.