shell - 用命令行对javac进行编译,总是『cannot find symbol』,但是eclipse执行不会出现问题
问题描述
代码如下分别是enum和testclass两个java文件
package cs121assignment1;public enum Food { APPLE('fruit', 55), BANANA('fruit', 80), CARROT('vegetable', 60);private final String catagory; //vegetable or fruit private final int calorie;Food(String catagory, int calorie){this.catagory = catagory;this.calorie = calorie; }public int getCalorie(){return calorie; }public String getCatagory(){return catagory; }}
package cs121assignment1;public class TestFood {public static void main(String[] args){ System.out.println('All foods:');for(Food food : Food.values()){System.out.printf('%s, catagory: %s, calorie: %d kilocalorie eachn', food, food.getCatagory(), food.getCalorie()); }}
eclipse中运行结果如下:
但是用命令行执行javac的时候显示如下:
问题解答
回答1:cd Desktop;javac cs121assignment1.TestFood;
不要cd Desktop/cs121assignment1;
回答2:把代码中第一行的package语句都删除cd 到包含.java文件的文件夹执行javac *.java得到两个.class文件java TestFood即可运行成功
这个问题其实是package的用法问题另外一种方法,不要去掉文件第一行的packagejavac -d ~/Desktop/cs121assignment1 Food.java TestFood.java会生成一个以cs121assignment1为命名的新文件夹包含Food.class 和 TestFood.class在新生成的cs121assignment1的上层目录用java cs121assignment1.TestFood即可运行成功