[已解决]Java编译报错?

# tree ./

./

└── src

└── com

└── neo

└── code

└── test

├── test

│   └── Test.java

└── user

└── User.java

# cat src/com/neo/code/test/user/User.java

package com.neo.code.test.user;

public class User {

private String name;

private int age;

private String address;

}%

# cat src/com/neo/code/test/test/Test.java

package com.neo.code.test.test;

import com.neo.code.test.user.User;

public class Test {

public static void main(String[] args) {

User user = new User();

System.out.println("hello world");

}

}%

# javac -version

javac 1.8.0_241

# javac -sourcepath src -classpath src com/neo/code/test/test/Test.java

javac: 找不到文件: com/neo/code/test/test/Test.java

用法: javac <options> <source files>

-help 用于列出可能的选项

-sourcepath选项使用错了吗?我看帮助文档还有-s选项,试了一下都不行,这是为啥?

↑原问题

# javac -sourcepath src -classpath src src/com/neo/code/test/test/Test.java

// 或者

# javac -s src -cp src src/com/neo/code/test/test/Test.java

编译器的执行可以不依赖package描述符,只要源文件不引入其它应用类或者被其它应用类引入,这时只要能准确定位到源文件即可;否则就要在源文件根目录执行编译或者用-sourcepath指定源文件根目录,这时需要再把-sourcepath目录做为前缀补充到源文件路径中去。

编译器的执行比JVM类加载多一步,从源文件import描述符中拼装完整类限定名并到类路径(-calsspath)中查询。如果找到多个目标类则编译第一个(如果未编译的话),如果找不到目标类则提示编译报错。

以上仅针对JDK8

以上是 [已解决]Java编译报错? 的全部内容, 来源链接: utcz.com/p/944245.html

回到顶部