关于通过终端javac编译Java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于通过终端javac编译Java相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

到目前为止它很好,但对于任何更复杂的项目,这将是非常烦人的。

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

答案

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

假设类MyJavaProject是包含你的main的那个,那将是:

java nameofthepackage.MyJavaProject

假设你用它构建它

javac -d . MyJavaProject.java

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

nameofthepackageMyJavaProject.class

以上是关于关于通过终端javac编译Java的主要内容,如果未能解决你的问题,请参考以下文章

Java千百问_08JDK详解(008)_通过代码如何编译java文件

从Java源码到Java字节码

深入分析 Javac 编译原理

列出javac编译的Java源文件

在linux下怎么编译和运行java程序

mac本为什么使用javac指令出现这样?