在Windows命令行中添加Jar文件以构建路径

时间:2009-12-16 12:52:42

标签: java command-line makefile compilation

我非常恼火不得不问这个,但我不能让它起作用。目前我有一个项目:

  

src /文件夹中的5个类

     

2 JARS命名为profiles.jar和   根文件夹中的classifier.jar

我想创建一个“makefile?”还是“批处理文件?”编译并运行这些类从WINDOWS命令行,但首先将jar添加到buildpath?我不知道我怎么回事这个

当我尝试这样做时,它表示找不到类,很可能是因为我没有正确地将jar添加到构建路径中。在命令提示符下运行此命令需要使用哪些命令?

由于 菲利普

修改

感谢您的帮助,我有很多麻烦让它工作 目前我有一个项目,在src文件夹中有5个类,在jar文件夹中有2个罐子

这是命令 我在跑步:

  

组   CLASSPATH = C:\ WAMP \ WWW \新闻\ UserProfiling \罐\ classifier.jar   ; C:\瓦帕\ WWW \消息\ UserProfiling \罐子\ profiles.jar

然后从根文件夹,我正在运行:

  

javac src / * .java

然后:

  

java -cp ./src:./jars/*   SRC /相互作用

交互是主要的类,我得到了各种各样的noclassfound错误,我做错了什么? 非常感谢菲利普

错误

  

java -cp ./src:./jars/*交互   线程“main”中的异常   java.lang.NoClassDefFoundError:   引起的互动:   抛出java.lang.ClassNotFoundException:   相互作用           在java.net.URLClassLoader $ 1.run(未知   资源)           在java.security.AccessController.doPrivileged(Native   方法)           在java.net.URLClassLoader.findClass(未知   资源)           在java.lang.ClassLoader.loadClass(未知   资源)           在sun.misc.Launcher $ AppClassLoader.loadClass(未知   资源)           在java.lang.ClassLoader.loadClass(未知   资源)           在java.lang.ClassLoader.loadClassInternal(未知   来源)无法找到主类:   相互作用。程序将退出。

4 个答案:

答案 0 :(得分:5)

在早于或等于Java版本5的版本中,您必须在类路径上单独指定每个jar以及源的根目录,例如

java -cp a.jar:b.jar:c.jar:./src MainClass

在版本6中,您可以使用通配符作为jar。例如

java -cp ./src:* MainClass

但将你的罐放入子目录可能更清洁,例如。

java -cp ./src:./jars/* MainClass

基本上,你的makefile或start脚本需要构建一个像上面那样的命令。

更多信息 - Sun docs (v6)

更新 - 为了响应您的第二次编辑,您需要指定完整的主类名,因此如果该类位于名为“com.mypackage.MainClass”的包中,那么您需要执行:

java -cp ./src:./jars/* com.mypackage.MainClass

我还建议在使整个脚本运行之前,先将命令作为独立命令运行。通过移除移动部件,调试速度更快,更容易看到发生了什么。

答案 1 :(得分:1)

我建议您查看antmaven。 Ant是一个非常简单的解决方案,maven不是那么简单,但在管理依赖关系方面有其优势。

答案 2 :(得分:1)

关于你的第二个问题:如果你使用

java -cp ./src:./jars/* src/Interaction

它将尝试启动不存在的类src / Interaction。 src已经在你的类路径中,所以你只需要做

java -cp ./src:./jars/* Interaction

答案 3 :(得分:0)

我认为找到了你的问题。

  

javac src / * .java

     

java -cp ./src:./jars/* src / Interaction

这个问题困扰了许多初学者:你需要从源树开始的目录运行javac和java。在您的情况下,该目录是src。由于src未出现在您的包名中,因此它也不应出现在您的编译/执行路径中。

所以你应该

cd UserProfiling/src 

并运行

javac *.java 

java -cp .:../jars Interaction 
从那里开始。