可执行jar文件的问题

密码测试 2007-01-23 02:44:39
AntTestPro.jar包中
manifest.mf的内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.4.2_09-b05 (Sun Microsystems Inc.)
main-class: myant.test.AntTest
Class-Path: C:\eclipse\workspace\AntTestPro\build\lib\log4j.jar

有两个java文件:
package myant.test;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class AntTest {

private static Logger logger = Logger.getLogger(AntTest.class.getName());

/**
* main method
*
* @param args
*/
public static void main(String[] args) {

PropertyConfigurator.configure("Log4j.properties");

logger.info("main method is start.");

MyPrint mp = new MyPrint();

mp.myPrint();

logger.info("main method is end.");
}

}

package myant.test;

import org.apache.log4j.Logger;

public class MyPrint {

private static Logger logger = Logger.getLogger(MyPrint.class.getName());

/**
* myPrint method
*
* <br>This method prints a String.
*
*/
public void myPrint() {
logger.info("myPrint method is start.");
System.out.println("Hi, This is Ant Test!");
logger.info("myPrint method is end.");
}

}

但是用:
jar -jar AntTestPro.jar
命令报错:
C:\eclipse\workspace\AntTestPro>java -jar AntTestPro.jar
Exception in thread "main" java.lang.NoClassDefFoundError: myant/test/AntTest
再线等,谢谢了
...全文
1159 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
脚本无敌 2007-01-23
  • 打赏
  • 举报
回复
blog 更新:
think in java 各章后练习答案.....
http://blog.csdn.net/heimaoxiaozi/
hdhmail2000 2007-01-23
  • 打赏
  • 举报
回复
建议楼主用fatjar插件,很好使,不用你担心什么,全帮你搞定
密码测试 2007-01-23
  • 打赏
  • 举报
回复
问题已经解决了,方法如下:
我的包结构如下:
AntTestPro.jar---myant---test---AntTest.class
| |
| | MyPrint.class
|
|MATE-INF---manifest.mf
将AntTestPro.jar和log4j.jar和Log4j.properties三个文件放在同一个目录下面,manifest.mf的内容如下:
Manifest-Version: 1.0
main-class: myant.test.AntTest
class-path: log4j.jar

然后执行java -jar AntTestPro.jar就可以了,双击也可以(因为没有开窗口,所以看不到效果,不过不会报错了)。
Voxer 2007-01-23
  • 打赏
  • 举报
回复
Class-Path: ./Lib/dom4j-1.6.1.jar ./Lib/mail.jar ./Lib/jemmy.jar ./Lib/activation.jar


我的程序的一个例子,这些jar文件都放在同级的外面目录下,没有和运行的jar打成一个包,你试一下了。注意大小写,包括目录的大小写,在windows下可能大小写不区别,在unix就区别。
密码测试 2007-01-23
  • 打赏
  • 举报
回复
我的包结构如下:
AntTestPro.jar---myant---test---AntTest.class
| |
| | MyPrint.class
|
|MATE-INF---manifest.mf
|
|log4j.jar
|
|Log4j.properties

我看很多热心人指出了很多链接,可是这些链接中说的内容大同小异,按照上面的说明操作一直不行,(我太笨了:))。
上述例子对有经验的人应该不难,能不能把我的例子直接实现了然后贴出来,十分感谢。
fengfangfang 2007-01-23
  • 打赏
  • 举报
回复
把log4j.jar也加到你的包里
LexChen 2007-01-23
  • 打赏
  • 举报
回复
参见
http://danmao.blogdriver.com/danmao/978761.html
在classpath处指定了你要用的jar应该就可以了
密码测试 2007-01-23
  • 打赏
  • 举报
回复
其实,双击执行如果不是要引入log4j.jar这个包的话,我已经实现了,现在关键是引入其他的包(例如log4j.jar)的时候,就不行
密码测试 2007-01-23
  • 打赏
  • 举报
回复
这个帖子的地址是:http://www.codes-bbs.cn/html/J2SE-class/2006/10/140891.html
我正在看,希望各位大虾给我更多建议,分不够可以再加100分。谢了。
密码测试 2007-01-23
  • 打赏
  • 举报
回复
也不行啊,而且,我在网上看到一个帖子,上面说:
一个可执行的 JAR 必须通过 menifest 文件的头引用它所需要的所有其他从属 JAR。如果使用了 -jar 选项,那么环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略。
夏至夕陽 2007-01-23
  • 打赏
  • 举报
回复
classpath裏加個.;呢?
密码测试 2007-01-23
  • 打赏
  • 举报
回复
去掉后:
C:\eclipse\workspace\AntTestPro>java -cp c:\eclipse\workspace\AntTestPro\lib\log4j.jar -jar AntTestPro.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at myant.test.AntTest.<clinit>(Unknown Source)
而且,我的目的就是要双击运行啊
JeasonZhao 2007-01-23
  • 打赏
  • 举报
回复
mf文件中去掉classpath,调用的时候附加所需要的类的jar文件到cp 试试

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧