我正在尝试运行以下
javac -Xlint:unchecked -classpath C:/Users/a b/workspace/ @C:/Users/a b/workspace/files_to_compile
但我得到了
javac: invalid flag C:/users/a
我也尝试用双引号括住这两个路径,但似乎没什么帮助:
javac -Xlint:unchecked -classpath "C:/Users/a b/workspace/" @"C:/Users/a b/workspace/files_to_compile"
我做错了什么?这个相同的代码在其他计算机上正常工作(可能是因为它们的路径中没有任何空白区域。)。
由于
答案 0 :(得分:4)
你的第二次尝试是对的
javac -Xlint:unchecked -classpath "C:/Users/a b/workspace/" @"C:/Users/a b/workspace/files_to_compile"
但要完成,您必须使用以下命令将空格转义为文件文件“files_to_compile”:
或
我建议第二个,但我不确定。
答案 1 :(得分:4)
我终于找到了问题的解决方案,我想这里没有人能猜到它。
答案的提示在于这样一个事实:文件列表的内容(在args中用@表示)通常会使其每个字符串的初始子字符串等于一个传递的类路径和@文件。
所以..
问题绝不是建议的命令行参数,而是@文件的内容。
文件的每一行必须放在它自己的行中,用引号括起来,并考虑到如果你在windows中,你必须以C:\\a\\b\\c.txt
的形式放置文件名! !
答案 2 :(得分:2)
我不得不承认这比我想象的要困难得多。 经过一些反复试验后,我想出了以下内容:
C:\ lol>“C:\ Program Files \ Java \ jdk1.7.0_07 \ bin \ javac”-cp“c:\ lol \ ab; c:\ lol \ foo bar”Lol.java
文件夹结构如下:
./foo bar
./foo bar/Moo.java
./Lol.java
./a b
./a b/AB.java
我使用文件夹和java文件进行了存档,您可以从中获取: http://www.pvv.ntnu.no/~rakhmato/tmp/lol.tar
你应该忽略@选项,因为它足以给编译器一个文件和一个正确的类路径,它可以找出它自己的所有内容。只需给编译器你的Main.java,它将找出该文件所依赖的内容。
我还建议你编写一个类似的.bat脚本来简化操作。没什么好看的,像这样:
的compile.bat:
“C:\ Program Files \ Java \ jdk1.7.0_07 \ bin \ javac”-classpath“c:\ lol \ a b; c:\ lol \ foo bar”Main.java
..将它放在你的项目文件夹中并从CMD运行compile.bat
答案 3 :(得分:2)
首先在shell中使用cd命令将目录移动到保存文件的目录。
cd /home/sayantani/PERSONAL\ FILES/sem\ 4\ courses/PLC/code/
请注意,只要有空间,我就会使用“\”。 “个人档案”变为“个人档案”。
然后使用“javac filename.java”
javac hello1.java
这应该可以解决您的问题。 请注意,在默认目录的整个路径上执行“javac”不起作用。(对我而言)
答案 4 :(得分:0)
你需要逃离空间。
将\
放在每个空格的前面并尝试。
答案 5 :(得分:0)
仅获取源字符串的第一部分会从路径中删除a b
之间的空格,它应该可以正常工作C:/Users/a_b/workspace/" @"C:/Users/a_b/workspace/files_to_compile"
。从来没有你应该在路径中有空格,编译器会忽略后一部分,否则你可以在a\ b
答案 6 :(得分:0)
有点破解,但是如果你在Windows 7上,你可以使用mklink
实用程序来创建指向同一个地方的另一个文件夹但没有空格。
编辑:也许是更好的解决方案:
cd "C:/Users/a b/"
javac ... -classpath "Workspace" ...
答案 7 :(得分:0)
来自“java /?”的使用信息
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>cd "C:\Program Files (x86)\Java\jre6\bin"
C:\Program Files (x86)\Java\jre6\bin>java.exe
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-classpath 表示您需要对多个路径使用分号(“;”)。
答案 8 :(得分:-1)
我无法测试它,但我建议如下(因为dmcgil建议分号应该是Windows上的类路径分隔符):
javac -Xlint:unchecked -classpath C:\Users\a^ b\workspace\;C:\Users\a^ b\workspace\files_to_compile
似乎是escape charachter for win shell is caret。
也建议here。
编辑:
另外,在你的问题中,我注意到在路径中使用斜杠(/),并不是所有版本的windows都使用反斜杠(\)作为文件分隔符?我在这个帖子的某个地方看到了你的评论,说明了这一点,所以我猜你有问题。