关于通过终端javac编译Java

时间:2018-03-03 15:20:57

标签: java compiler-errors classpath

我是一名Java新手,刚开始在大学学习,我的班级正在使用NetBeans,但我想使用VSCode。

教授告诉我们每个Java文件应该从以下开始: 包名称包装 这样Java知道我创建的类(文件)属于哪个包。

所以我总是创建这个结构: 我创建了一个包含主类名称的文件夹,在这个文件夹中我创建了一个存储Java文件的src文件夹。例如: MyJavaProject / SRC / MyJavaProject.java

我总是将主.Java文件命名为与项目文件夹名称相同。

当我编译时,我使用带有-cp参数的javac来指定src文件夹是classpath文件夹,它应该在那里查找我创建的.Java文件。 我也总是告诉javac使用* wildcard编译src文件夹中的所有文件。

问题是,在我的.Java文件之上使用这一行,javac会编译所有文件,但是我无法执行字节码,因为它抱怨它无法找到我创建的类,甚至主要的一个。

当我从文件顶部删除包行时,我可以编译并运行代码。

到目前为止它还不错,但对于任何更复杂的项目来说,这真的很烦人。

任何想法我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要指定包含main函数的类的全名(带包)。

假设班级MyJavaProject是包含你的主要的,那就是:

java nameofthepackage.MyJavaProject

这假设您使用

构建它
javac -d . MyJavaProject.java

它将在目录结构中创建目标类,如:

nameofthepackage\MyJavaProject.class