作者:liguisen
blog:http://blog.csdn.net/liguisen/
在用JCreator(3.5 Pro)编译一个非常简单的Java程序时出错,已肯定程序代码正确,jdk配置正确,代码原先也能正确编译,JCreator提示“写入 ** 时出错”,“系统找不到指定的路径”。出现这种情况往往大家都认为是jdk环境变量没有设置好(说到这个环境变量的设置,jdk简直做的是垃圾,就不能在安装的时候自动的帮用户设置好吗?用户有需要再添加新的就是啦),其实问题不在这里。
为了看清楚问题在哪里,先从菜单点开Configure->Options…选中JDK Tools,然后编辑compiler的default,在Command属性页选中Show command line,然后重新编译,在build output的内容如下(以我的环境为例):
--------------------Configuration: SimpleCharInOut - JDK version 1.5.0_06 <Default> - <Default>--------------------
Command
: "C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/bin/javac.exe" -g -classpath "C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/jre/lib/rt.jar;C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/lib/dt.jar;C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/lib/tools.jar;C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/jre/lib/ext/dnsns.jar;C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/jre/lib/ext/localedata.jar;C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/jre/lib/ext/sunjce_provider.jar;C:/Program Files/MyProgramFiles/Java/jdk1.5.0_06/jre/lib/ext/sunpkcs11.jar" -d "G:/Myworkfiles/java/SimpleCharInOut/classes" @src_simplecharinout.txt
Directory : G:/Myworkfiles/java/ch2/SimpleCharInOut
G:/Myworkfiles/java/ch2/SimpleCharInOut/src/SimpleCharInOut.java:8: 写入 SimpleCharInOut 时出错: G:/Myworkfiles/java/SimpleCharInOut/classes/SimpleCharInOut.class (系统找不到指定的路径。)
public class SimpleCharInOut {
^
1 错误
Process completed.
从上面这一段我们可以看到jdk的设置是没有问题的,出现了两个路径G:/Myworkfiles/java/SimpleCharInOut/classes和G:/Myworkfiles/java/ch2/SimpleCharInOut,而后一个路径则是当前工程的路径,前一个路径我发现竟然是我原来存放这个工程的路径!这个路径现在在我的硬盘上是不存在的,因此JCreator才提示不能往这个路径写入class文件。
这些路径放在哪里呢?打开该工程jcp文件,其中一部分的内容如下:
<root_path>/</root_path>
<output_path>G:/Myworkfiles/java/SimpleCharInOut/classes/</output_path>
<source_path>G:/Myworkfiles/java/SimpleCharInOut/src/</source_path>
<jdkprofile_ref>JDK version 1.5.0_06</jdkprofile_ref>
工程文件里面保存的竟然是绝对路径,这是否意味着用JCreator建立的工程/工作空间不能移动???如果真是这样那也太糟糕了,所幸这个bug并不是经常出现,找个正常的jcp文件来看看,如下:
<root_path>/</root_path>
<output_path>classes/</output_path>
<source_path>src/</source_path>
<jdkprofile_ref>JDK version 1.5.0_06</jdkprofile_ref>
因此,如果你的工程出现这个问题,解决方法也很简单,把jcp文件里面的绝对路径改成相对的就可以了。