原程序是:
在包com.guangzhou.jar中的某个类中main方法中调用:
Class.forName("com.huizhou.Test");而类com.huizhou.Test,并不在该包中,而是在另一个包:com.huizhou.jar中。但是在命令行中:java -cp %TOOL_PATH% -jar com.guangzhou.jar
(变量TOOL_PATH包含了com.huizhou.jar)结果在Class.forName("com.huizhou.Test");抛出ClassNotFoundException但在Eclipse中,只要在guangzhou工程的java build path中配置了包com.huizhou.jar就能正常。
Eclipse中一定是使用了某个方法使得Class.forName能找到外部包,很想怎样使在命令行中也正常呢?

解决方案 »

  1.   

    把jar文件com.huizhou.jar的com.去掉
    *.jar
      

  2.   

    Paripatetic(逍遥) ( ) 信誉:100  2006-03-01 18:33:00  得分: 0  
       把jar文件com.huizhou.jar的com.去掉
    *.jar
      
    什么意思?
      

  3.   

    不知道说什么指定classpath就可以的
      

  4.   

    Eclipse有自己的一套,你自己相加载类,路径当然要设置好了。
      

  5.   

    Eclipse比较好,可以省去好多麻烦
      

  6.   

    请注意这一句:但是在命令行中:java -cp %TOOL_PATH% -jar com.guangzhou.jar
    (变量TOOL_PATH包含了com.huizhou.jar)
      

  7.   

    java -cp %TOOL_PATH% -jar com.guangzhou.jar
    这样做应该没有问题了;而且你放置到环境变量中后,编译时已经不需要加-cp参数了
      

  8.   

    我叙述下作过的所有尝试:
    -----------(1)----------
    set %TOOL_PATH%=...
    java -cp %TOOL_PATH% ...-----------(2)----------
    set %CLASSPATH%=...
    java -cp %CLASSPATH% ...-----------(3)----------
    set %CLASSPATH%=...
    java (去掉 -cp %TOOL_PATH%) ...在以上基础上,将-cp 改为-classpath无一幸免,全抛出异常。
    如果我使用ant,却不会出现这样的事
      

  9.   

    你试试Class.forName("huizhou.Test");
      

  10.   

    现在已经知道,在命令行中运行jar包,设置cp没用,必须在Manifest.mf中加入一行:Class-Path: XX.jar XX2.jar XX3.jar