现在我想在程序中动态将别的程序打成jar文件并运行
假设程序安装在d:\code中,文件是code.jar
现在出现了奇怪的问题
在cmd下
当前目录为D:\code时,运行jar cvfm code.jar manifest.mf *.class打出来的jar文件用
java -jar code.jar运行正常但是在其他任意目录下,运行jar cvfm d:\code\code.jar d:\code\manifest.mf d:\code\*.class
这样也能产生一jar文件,但是运行的话错误提示:
Exception in thread "main" java.lang.NoClassDefFoundError: code这是为什么啊!!!
因为我在程序里动态产生jar文件的话,一定需要用绝对路径的啊!
谁知道打包出来的不能运行!是不是manifest.mf写得不对啊
我写得是:
Main-Class: code
是不是这里要写绝对路径?可是这儿得绝对路径怎么写啊!写成上面那种又要出错!
假设程序安装在d:\code中,文件是code.jar
现在出现了奇怪的问题
在cmd下
当前目录为D:\code时,运行jar cvfm code.jar manifest.mf *.class打出来的jar文件用
java -jar code.jar运行正常但是在其他任意目录下,运行jar cvfm d:\code\code.jar d:\code\manifest.mf d:\code\*.class
这样也能产生一jar文件,但是运行的话错误提示:
Exception in thread "main" java.lang.NoClassDefFoundError: code这是为什么啊!!!
因为我在程序里动态产生jar文件的话,一定需要用绝对路径的啊!
谁知道打包出来的不能运行!是不是manifest.mf写得不对啊
我写得是:
Main-Class: code
是不是这里要写绝对路径?可是这儿得绝对路径怎么写啊!写成上面那种又要出错!
用Ant的?
比如你的jar在d:\code下,而你在c:\下用java -jar code.jar,当然是会报上面的那个异常了,很明显,没有找到类嘛。
在cmd下
当前目录为D:\code时,运行jar cvfm code.jar manifest.mf *.class打出来的jar文件在d:\code目录下用:
java -jar code.jar运行正常但是在其他任意目录下,运行jar cvfm d:\code\code.jar d:\code\manifest.mf d:\code\*.class
在d:\code下产生code.jar文件,但是在d:\code下运行java -jar code.jar的话错误提示:
Exception in thread "main" java.lang.NoClassDefFoundError: code
更不要说在其他目录下了啊!不知道你们谁试一下呢看看是不是这样啊!
String[] cmd = {"jar", "cvfm",.....}; //连接成打包命令的字符串
Process process = Runtime.getRuntime().exec(cmd);
这样打包的话看来必须用绝对路径啊!(可以不用绝对路径吗?)而用绝对路径的话就产生以上问题啊!
还有 你看一下这篇文章把!会对你有帮助的 !http://blog.csdn.net/gqy789/archive/2005/08/12/452024.aspx
CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
软件!
界面: http://qqwwee.com/
下载: http://qqwwee.com/csdn.rar 包含源代码
你打到d:\ 试一下 !
这样吗??不行啊!!
打出来还是不能运行!!
jar cvfm d:\code.jar d:\manifest.mf -C d:\ code
这样打出来的.class文件不在.jar文件内的根目录下而是在code文件夹下!
jar cvfm d:\code.jar d:\manifest.mf -C d:\code \看好空格!
是这样 !
生成也只能生成在d:\下!没办法都放在本身的目录下吗???