【问题标题】:Import Java files from different directory从不同目录导入 Java 文件
【发布时间】:2021-06-09 19:58:28
【问题描述】:

有人可以帮我为 java 设置一个 .classpath 吗?
我正在尝试从当前文件中的父母的孩子导入 java 文件

src/
  dir1/
    main.java
  dir2/
    file1.java
    file2.java
    ...

我应该如何设置我的类路径,以便我可以在main.java 中执行import dir2.*
我知道linux中有一个命令可以创建一个类路径我只是不知道该怎么做,我也搜索了该信息但也无法理解

【问题讨论】:

    标签: java classpath


    【解决方案1】:

    按照强约定的类名以大写字母开头。所以:

    src/
      dir1/
        Main.java
      dir2/
        File1.java
        File2.java
    

    Main.java

    package dir1;
    import dir2.File1;
    import dir2.File2;
    public class Main { ... }
    

    文件1.java

    package dir2;
    import dir1.Main;
    public class File1 { ... }
    

    文件2.java

    package dir2;
    import dir1.Main;
    public class File2 { ... }
    

    --classpath dir1:dir2 通常位于 .class 文件的单独构建目录中,通常命名为 targetbuild

    您是说源是生成的。我仍然会尝试使用 IDE,例如 IntelliJ 社区版。用于检查、格式化、自有库代码、目录约定、maven 或 gradle 构建基础架构。

    对于模块化java,从java 9开始,需要一个src/module-info.java(小写字母)。

    【讨论】:

    • 我无法将包名添加到文件中,因为我使用的是 ANTLR4,当我执行 antlr4-build 时,它会重写一些需要的文件并删除“包”行是否有其他方法去做吧?例如创建.classpath
    • 你可以在 dir1 和 dir2 中编译(默认为空包)。当为 .class 文件使用单独的目标目录时,您可以将该目录用作类路径。
    【解决方案2】:

    你应该在你的主类中使用 import 关键字,下面的 sn-p 演示了这一点

    import dir2.*;
    public class mainClass {
        //other implementations
    }
    

    【讨论】:

    • 这不起作用,因为 dir2 不是 dir1 的子目录,要使用它,我需要将我的类路径设置为父目录
    • dir2 目录中是否有任何类或接口会被 dir1 目录继承?如果是,您的 IDE 将自动帮助您实现这一目标
    • 我无法使用 IDE,因为我正在处理一个名为 ANTLR4 的语言生成器,并且接口或类没有被继承
    猜你喜欢
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    相关资源
    最近更新 更多