Java编译报错:package com.fancy.widgets不存在问题求助
解决javac找不到com.fancy.widgets包的问题
你遇到的问题核心是shell对单引号内的波浪号~不会进行路径解析,导致javac无法正确定位到你已经编译好的class文件所在目录。
修复方案(任选其一即可)
- 将单引号替换为双引号,让shell自动解析
~为你的用户主目录:javac -classpath ".:~/java/classes" fancy.java - 直接使用绝对路径(假设你的用户主目录是
/home/keith):javac -classpath ".:/home/keith/java/classes" fancy.java - 用
$HOME环境变量替代~,兼容性更强:javac -classpath ".:$HOME/java/classes" fancy.java
为什么原命令会失败?
当你用单引号包裹'.:~/java/classes'时,shell会把整个字符串原封不动地传递给javac。javac会把~/java/classes当作一个字面量路径,而不是解析成你的用户主目录下的实际路径,自然找不到里面的com/fancy/widgets/spinner.class文件。
快速验证方法
你可以通过echo命令直观看到两种引号的区别:
echo '.:~/java/classes' # 输出:.:~/java/classes(字面量,未解析) echo ".:~/java/classes" # 输出:.:/home/你的用户名/java/classes(已解析为实际路径)
修改后javac就能正确找到com.fancy.widgets包对应的class文件,编译应该就能正常通过了。
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

