【问题标题】:How to import class of one file to another in a subfolder in Java using vscode如何使用vscode将一个文件的类导入Java子文件夹中的另一个文件
【发布时间】:2020-12-31 05:33:50
【问题描述】:
import mytest.Mypckg;

public class Learn {
  public static void main(String[] args) {
    System.out.println("Hello World");
    Mypckg.show();
  }
}
package mytest;
public class Mypckg {
  public static void show(){
    System.out.println("Good Moring");
  }
}

两个文件都在同一个子文件夹名称 mytest 但是当我尝试运行主文件 => 学习时,出现错误 “Learn.java:2:错误:找不到符号导入 mytest.Mypckg;”。我还尝试从 Learn 文件中删除 import mytest.Mypckg,因为两者都具有相同的包,但是当我编译时出现“找不到符号 Mypckg”的错误。

【问题讨论】:

  • Move Learn 是文件夹 mytest 中的一个新子文件夹 Mypckg。目录结构必须复制包结构。您可能还需要将子包 Mypckg 重命名为不等于类的 Mypckgs 名称,因为这可能会导致名称冲突。

标签: java class package


【解决方案1】:

我假设这两个文件都在名为 mytest 的包/文件夹中 并且您的代码似乎错过了下面添加的这一行

package mytest;//added line
//import mytest.Mypckg;

public class Learn {
  public static void main(String[] args) {
    System.out.println("Hello World");
    Mypckg.show();
  }
}

【讨论】:

    【解决方案2】:

    在我没有在主文件 (Learn.java) 中提到包 mytest 的一种情况下你是对的。那是我的错,但是在我的计算机中,当我在两个文件中都提到包 mytest 时,我也收到了一个错误,例如“找不到符号导入 mytest.Mypckg;”

    我终于找到了解决方案。实际问题是我在子文件夹 mytest 中使用了编译方法。事实上,我试图通过走出子文件夹来编译文件以获取 mytest 文件夹的路径。但主要的罪魁祸首是别的东西。我没有在我的编译代码中使用类路径(即-cp)。因此,要在 vscode 中编译包文件,我们必须转到父文件夹并输入以下代码。

    javac -cp . mytest/Learn.java // compiler code with file path 
    

    还要运行我们必须使用的文件

    java mytest.Learn     // mytest is a subfolder (package folder) and learn is a main file
    

    在下面我附上了图片,以便为我的同事们提供更好的说明。我希望我的回答能帮助那些想用 vscode 中的包编译 java 代码的人

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 2020-01-24
      • 2016-04-12
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多