我在编译我的项目时遇到了一些指定multiple.jar文件的问题。 我几乎可以肯定:
sudo javac -classpath .:../lib/*.jar server/*.java models/*.java authentication/*.java database/*.java
会工作。 就像.java文件一样。 但事实并非如此。
我刚才意识到,我必须指定每个.jar如下所示:
sudo javac -classpath .:../lib/gson-2.2.4.jar:../lib/mysql-connector-java-5.1.26-bin.jar server/*.java models/*.java authentication/*.java database/*.java
那么,每当我需要一个新的.jar文件时,是否真的必须在我的run.sh shell代码中添加一个新的.jar?
总结这个问题:
-classpath .:../lib/gson-2.2.4.jar:../lib/mysql-connector-java-5.1.26-bin.jar
作品。
-classpath .:../lib/*.jar
不,为什么?
你不需要指定* jar你只需要这样的东西:
-classpath .:../lib/*
添加所有的罐子。 (不包括.jar后缀)请阅读
http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html
“了解课程路径通配符”
例如,类路径条目foo / *指定名为foo的目录中的所有JAR文件。 一个由*组成的类路径条目将展开为当前目录中所有jar文件的列表。 无论是否隐藏文件(即以“。”开始),文件都将被考虑。
您需要引用*,以便shell不会扩展它。
#this doesn't work: javac -classpath .:../lib/*.jar ... #the above expands to (notice the space between the jar files): javac -classpath .:../lib/jar1.jar ../lib/jar2.jar ... #this should work: javac -classpath '.:../lib/*' ...
你想要javac
来解释'*',而不是shell。