javac编译采坑

2022-04-25  本文已影响0人  后知不觉1

背景

目录结构如图


image.png
package com.tianzehao;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

#在src/main/java中编译App.java 没有问题 javac com/tianzehao/App.java

如果App类中有引用就无法编译成功

package com.tianzehao;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        Test.sayName();
    }
}


 #报错如下
com/tianzehao/App.java:12: error: cannot find symbol
        Test.sayName();
        ^
  symbol:   variable Test
  location: class App
1 error

是因为javac 编译时默认查找路径为$CLASSPATH(linux服务器),而该变量中没有该路径/data1/tianzehao/java/maven_demo/src/main/java导致查找Test类失败而无法编译
输出见下图

image.png

解决办法

javac -cp 参数指定类的搜索目录即可,这里也说明javac编译时不会去校验包路径,查找其他类时会按照包路径查询

 javac -cp ./ com/tianzehao/App.java #

思考

上一篇 下一篇

猜你喜欢

热点阅读