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

我很不高兴不得不问这个,但我不能让它工作。 目前我有一个项目:

5个src /文件夹中的类

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

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

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

谢谢Philip

编辑

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

以下是我正在运行的命令:

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

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

javac src / * .java

然后:

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

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

错误

java -cp ./src:./jars/*交互线程“main”中的exceptionjava.lang.NoClassDefFoundError:交互引起:java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(未知来源)处的交互java.security.AccessController.doPrivileged(本机方法),位于java.lang.ClassLoader.findClass(未知来源),位于sun.misc.Launcher的$ java.lang.ClassLoader.loadClass(未知来源)$ AppClassLoader.loadClass(未知来源)at java.lang.ClassLoader.loadClassInternal(未知来源)中的java.lang.ClassLoader.loadClass(未知来源)无法找到主类:交互。 程序将会退出。

在早于或等于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脚本需要构建一个像上面这样的命令。

更多信息 – Sun docs(v6)

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

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

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

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

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

 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 

 java -cp .:../jars Interaction 

从那里。