A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾存双 中级黑马   /  2012-7-11 21:24  /  1173 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package org.jcs.a ;
public class JarDemo{
public String getInfo(){
  return "jar包中的方法" ;
}
} ;
将上面代码打包编译成名为 myjar.jar 包
package org.jcs ;
import org.jcs.a.* ;
public class MainJarDemo{
public static void main(String args[]){
  JarDemo jar = new JarDemo() ;
  System.out.println(jar.getInfo()) ;
}
} ;
这个打包成一个包。
我的电脑几经配置好classpath路径: .;%java_home%\lib;%java_home%\lib\tools.jar;%java_home%\lib\dt.jar;%java_home%\jre\lib\rt.jar;
我要问的问题是为什么在控制台运行这个程序的时候还要再设置一次classpath路径指定jar包: E:\demo>set classpath=.;e:\demo\myjar.jar 才能运行这个程序。
E:\demo>java org.jcs.MainJarDemo
Exception in thread "main" java.lang.NoClassDefFoundError: org/jcs/a/JarDemo
        at org.jcs.MainJarDemo.main(MainJarDemo.java:5)
Caused by: java.lang.ClassNotFoundException: org.jcs.a.JarDemo
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

1 个回复

倒序浏览
建议打包的时候使用JarFat插件,这样可以帮助你解决classpath路径的问题,一劳永逸
http://fjep.sourceforge.net
问题应该出在Eclipse中自带打包工具,在打包时并没有把类路径写入到jar包中的MANIFEST.MF文件中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马