【问题标题】:JAVA: Can't compile files in same package with JavacJAVA:无法使用 Javac 编译同一包中的文件
【发布时间】:2015-12-30 04:18:33
【问题描述】:

我确实搜索了很多,但仍然无法解决 JAVA 的奇妙问题:包。 我有 2 个小类,在同一个包中:elte.esti.beadando 这两个文件称为 NimJatek 和 NimMain。 当我使用以下内容编译 NimJatek 时: c:\elte\esti\beadando\javac NimJatek.java 当我尝试编译时,它没有问题: c:\elte\esti\beadando\javac NimMain.java 它给出了一个错误:NimJatek 符号未找到。

我已经尝试了所有可能的组合,但仍然不起作用。 到目前为止我尝试过的组合:

c:\elte\esti\beadando\javac -cp c:\elte\esti\beadando NimMain.java
c:\elte\esti\beadando\javac -cp c:\elte\esti\beadando beadando/NimMain.java
c:\elte\esti\beadando\javac -cp c:\elte\esti\beadando.NimJatek NimMain.java
c:\elte\esti\beadando\javac -cp c:\elte\esti\beadando.NimJatek beadando/NimMain.java
c:\elte\esti\beadando\javac -cp c:\elte\esti\beadando.NimJatek.class NimMain.java
c:\elte\esti\javac beadando/NimMain.java
c:\elte\esti\javac -cp c:\elte\esti\beadando.NimJatek beadando/NimMain.java
c:\elte\esti\javac -cp c:\elte\esti\beadando.NimJatek.class beadando/NimMain.java
c:\javac -cp c:\elte\esti\beadando.NimJatek elte\esti\beadando/NimMain.java

可能还有更多,我不记得了。我错过了什么??当我从两个文件中删除“package elte.esti.beadando”时,它们编译并运行良好。

注意:我不想使用编译器程序,我只能使用命令行(windows)。

【问题讨论】:

  • 您确定您的 java 文件在顶部有 package 语句(即 package elte.esti.badando 然后才导入和分类吗?
  • 是的,我很肯定。我知道对于包,“package xy”语句首先出现,这是正确的。
  • dbrown93 - 我也试过了。请查看我的原始帖子,到目前为止我尝试过的变体。
  • 路径 = 父目录不是文件。

标签: java compilation package


【解决方案1】:

由于有多个文件,我相信运行

javac c:\elte\esti\beadando\*.java

假设依赖项仅限于包本身,应该可以正确编译。

【讨论】:

    【解决方案2】:

    问题已解决。感谢您的输入。 显然解决方案很棘手:我使用的命令是: c:\elte\esti\beadando\javac -d c:\elte\esti\beadando\elte\esti\beadando NimJatek.java

    然后

    c:\elte\esti\beadando\javac -cp 。 NimMain.java

    完成!!有效。 换句话说:如果你有一个包,并且你需要使用dos命令提示符来编译,那么: - 从 ROOT 目录使用 javac -d PACKAGEPATH FILENAME_A.java 然后 从同一根目录 javac -cp 。文件名_B.java 这是因为 FILE_B 使用 FILE_A。

    【讨论】:

      【解决方案3】:

      包elte.esti.beadando

      这意味着 Java 文件必须出现在您的类路径下的 elte/esti/beadando 目录下。如果文件在

      C:\elte\esti\beadando\NimJatek.java

      这意味着你的包的根目录是c:\

      这意味着你必须使用

      javac -cp C:\ C:\elte\esti\beadando\NimMain.java
      

      您无需尝试从头开始设置项目,而是通过使用 IDE 来设置项目、编辑项目、在编译之前检查项目并一键编译/运行项目,从而避免大量错误和错误.

      【讨论】:

      • 我们必须这样做......但它仍然不起作用:(尝试从根目录编译,也按照你的建议,但它仍然不起作用。如果我删除从两个文件中提取“package elte.esti.beadando”,然后编译,就可以了……
      • 编译后是否运行成功?
      • @user3420063 “它不起作用”是什么意思 它有什么作用?
      • @user3420063 文件的确切位置是什么?从您的问题无法判断。
      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多