【问题标题】:About compiling Java through terminal javac关于通过终端javac编译Java
【发布时间】:2018-03-03 23:42:43
【问题描述】:

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

教授告诉我们,每个 Java 文件都应该以: 包的包名 这样Java就知道我创建的类(文件)属于哪个包了。

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

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

当我编译时,我使用带有 -cp 参数的 javac 来指定 src 文件夹是类路径文件夹,它应该在其中查找我创建的 .Java 文件。 我也总是告诉 javac 使用 * 通配符编译 src 文件夹中的所有文件。

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

只要我从文件顶部删除 package 行,我就可以编译和运行代码了。

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

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 您是否使用 package.class 执行代码?对于更复杂的项目,我会使用 Eclipse 之类的 IDE。
  • 如果您不想使用 IDE,我建议您研究并学习如何使用 Makefiles for java。还有其他构建系统,但 Makefile 可能是最容易学习和开始的小项目

标签: java compiler-errors classpath


【解决方案1】:

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

假设MyJavaProject 是包含你的主类的类,那就是:

java nameofthepackage.MyJavaProject

这是假设您使用

构建的
javac -d . MyJavaProject.java

它会在如下目录结构中创建您的目标类:

nameofthepackage\MyJavaProject.class

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 2019-03-02
    • 2014-03-18
    • 2020-06-28
    • 1970-01-01
    • 2017-02-06
    • 2015-11-30
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多