在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
从那里。