代码之家  ›  专栏  ›  技术社区  ›  Cflowe Visit

如何从软件包外部导入文件?

  •  1
  • Cflowe Visit  · 技术社区  · 3 年前

    如何从软件包外部导入文件? 例子:

    // this is a.java
    package user.code.gui;
    void method_a(){
        // do something
    }
    

    // this is b.java
    package user.code;
    void method_b(){
        // do something
    }
    

    // this is c.java
    package user.extensions;
    void method_c(){
        // do something
    }
    

    如果我在文件a.java中使用“import c”,它就找不到这个文件,因为它在另一个包中。问题是,如何在文件a.java中导入文件c.java?

    1 回复  |  直到 3 年前
        1
  •  0
  •   rzwitserloot    3 年前

    在编译期间,以及在运行时,您需要另一个包在那里;这些是不同的东西,但它们都有类路径的概念。

    Java总是通过将类型名转换为目录名来寻找事物; package a.b; class Foo {} 是在里面找的 /a/b/Foo.class .

    它会扫描类路径中的每个条目。类路径条目可以是目录,也可以是jar文件。

    构建系统(maven、gradle等)和IDE(eclipse、intellij等)——使其易于配置,并在总体上为您做好准备。你应该使用这些工具;99%的java项目是由IDE和/或构建工具编译的。

    一旦你开始有多个包, javac 变得笨重。

    但是,如果必须使用命令行:

    您的目录结构:

    /Users/Cflowe/workspace/MyAwesomeProject/src/user/code/gui/GuiClass.java
    /Users/Cflowe/workspace/MyAwesomeProject/src/user/code/Whatever.java
    

    等等要编译:

    cd /Users/Cflowe/workspace/MyAwesomeProject
    mkdir bin
    javac -sourcepath src -d bin src/user/code/Whatever.java src/user/code/gui/GuiClass.java andSpecifyEveryOtherFileByHandHere
    
    java -cp bin com.foo.Main