javac编译程序包不存在问题解决

情景复现

导致错误的command如下

javac -cp "C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\java;org\apache\commons\cli2;
C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\test\org\apache\commons\cli2\generated_by_chatgpt;
C:\Libraries\maven-3.5.0\lib\*" 
C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\test\org\apache\commons\cli2\generated_by_chatgpt\ArgumentTest1.java

可以看到classpath的前两个路径一个是被测类的,一个是测试类的,共同点是都是绝对路径

这样会导致编译结果的stderr为

compile_result.stderr :
C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\test\org\apache\commons\cli2\generated_by_chatgpt\ArgumentTest1.java:4: 错误: 程序包org.apache.commons.cli2.option不存在
import org.apache.commons.cli2.option.ArgumentImpl;

 但是我又确定程序包org.apache.commons.cli2.option是存在的(冤种脸)

解决方案

参考了javac命令出现自定义包不存在问题解决方案_Victor丨的博客-CSDN博客

改了新的command如下,将第一个绝对路径砍半,分成前缀和import后面的内容

javac -cp "C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\java;org\apache\commons\cli2;C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\test\org\apache\commons\cli2\generated_by_chatgpt;C:\Libraries\maven-3.5.0\lib\*" C:\dataset\d4j-spec5\2_cli\2.0\commons-cli2\src\test\org\apache\commons\cli2\generated_by_chatgpt\ArgumentTest1.java

我的import语句是这样的

import org.apache.commons.cli2.option.ArgumentImpl;

这一次编译通过! 

总结

说org.apache.commons.cli2.option不存在,就将org上一级的路径单拎出来,让org开始的路径成为一个相对路径。

你可能感兴趣的:(java,java,javac)