Java 在Windows命令行中将Jar文件添加到Buildpath

Java 在Windows命令行中将Jar文件添加到Buildpath,java,command-line,makefile,compilation,Java,Command Line,Makefile,Compilation,我很恼火不得不问这个问题,但我无法让它发挥作用。目前,我有一个项目: src/文件夹中有5个类 名为profiles.jar和 根文件夹中的classifier.jar 我想创建一个“makefile”或“批处理文件”,以便从WINDOWS命令行编译和运行这些类,但首先要将JAR添加到构建路径?我不知道该怎么办 当我尝试这样做时,它说找不到该类,很可能是因为我没有正确地将JAR添加到构建路径。在命令提示符下运行此命令需要使用哪些命令 谢谢 菲利浦 编辑 谢谢你的帮助,我很难让它正常工作 目前我有

我很恼火不得不问这个问题,但我无法让它发挥作用。目前,我有一个项目:

src/文件夹中有5个类

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

我想创建一个“makefile”或“批处理文件”,以便从WINDOWS命令行编译和运行这些类,但首先要将JAR添加到构建路径?我不知道该怎么办

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

谢谢 菲利浦

编辑


谢谢你的帮助,我很难让它正常工作 目前我有一个项目,src文件夹中有5个类,jar文件夹中有2个jar

以下是命令 我正在运行:

设置 CLASSPATH=C:\wamp\www\news\UserProfiling\jars\classifier.jar ;C:\wamp\www\news\UserProfiling\jars\profiles.jar

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

javac src/*.java

然后:

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

互动是主要的课堂,我会遇到各种各样的错误,我做错什么了吗? 非常感谢菲利普

错误

java-cp./src:./jars/*交互 线程“main”中出现异常 java.lang.NoClassDefFoundError: 由以下原因引起的相互作用: java.lang.ClassNotFoundException: 相互作用 在java.net.URLClassLoader$1.run处(未知 (来源) 位于java.security.AccessController.doPrivileged(本机 (方法) 位于java.net.URLClassLoader.findClass(未知 (来源) 位于java.lang.ClassLoader.loadClass(未知 (来源) 在sun.misc.Launcher$AppClassLoader.loadClass(未知 (来源) 位于java.lang.ClassLoader.loadClass(未知 (来源) 位于java.lang.ClassLoader.loadClassInternal(未知 源)找不到主类: 相互作用程序将退出


我建议你看一下或。Ant是一个解决方案,可以非常简单地完成您想做的事情,maven并不是那么简单,但在管理依赖项方面有它的优势。

在Java 5版之前或之后的版本中,您必须在类路径上分别指定每个jar和源的根,例如

java -cp a.jar:b.jar:c.jar:./src MainClass
在版本6中,您可以对JAR使用通配符,例如

java -cp ./src:* MainClass
但将JAR放入子目录可能更干净,例如

java -cp ./src:./jars/* MainClass
因此,基本上,您的makefile或start脚本需要构造一个类似于上述命令之一的命令

更多信息-

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

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

我还建议在运行整个脚本之前,先让命令作为独立命令运行。通过移除移动部件,可以更快地进行调试,更容易地查看正在发生的事情。

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

java -cp ./src:./jars/* src/Interaction
它将尝试启动不存在的src/Interaction类。src已经在您的类路径中,所以您只需执行以下操作

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

我想我发现了你的问题

javac src/*.java

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

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

所以你应该

cd UserProfiling/src 

javac *.java 


从那以后。

我猜梅文的蚂蚁对菲尔想做的事做得太过火了,这可能只是一次性的任务。但是,是的,长期来看,值得一看……ant的设置和使用相当简单,而且有一个项目文件可以使重复这个过程和/或更改/扩展它变得很容易。另一方面,maven是。。。好吧,我宁愿避免它。谢谢你的帮助,我很难让它正常工作,因为目前我有一个项目,src文件夹中有5个类,jar文件夹中有2个jar。下面是我正在运行的命令:set CLASSPATH=C:\wamp\www\news\UserProfiling\jars\classifier.jar;C:\wamp\www\news\UserProfiling\jars然后从根文件夹中运行:javac src/*.java然后:java-cp./src:./jars/*src/交互交互是主类,我得到各种noclassfound错误,我做错了什么吗?非常感谢Philipthanks,仍然得到同样的错误。添加到问题描述中交互在哪个包中?(我希望类似com.bla.Interation的内容)您得到的错误是由于未使用完整的主类名,而主类名必须包含包。因此,与“Interation”不同,您最初需要类似“com.x.y.Interation”的东西,它在默认包中,因为它是一个非常小的程序,但后来我尝试将它放在一个名为test并运行的包中:java-cp./src:./jars/*UserProfiling.test.Interaction(UserProfiling是我项目的名称,对吗?)但我还是犯了同样的错误,我注意到你一直提到“src”,这显然是你的Java源代码所在。但是CP需要指向编译的.class文件所在的位置!他们也在src吗?此外,在您之前的评论中,您对“test”有不同的大写字母。
java -cp .:../jars Interaction