代码之家  ›  专栏  ›  技术社区  ›  Antimony

Java 9模块的目录布局

  •  4
  • Antimony  · 技术社区  · 7 年前

    我一直在尝试编写Java 9模块,但无论我做什么,我都会得到错误“包为空或不存在”。我试着在网上搜索预期的目录布局,并尝试了我能想到的目录布局的每一种变体,但没有任何效果。

    例如,我试过一种布局

    bar.foo/module-info.java

    module bar.foo {
        exports bar.foo;
    }
    

    bar.foo/bar/foo/wtf.java

    package bar.foo;
    
    public class wtf {
    }
    

    然而,编译仍然会产生与通常相同的错误。

    > javac bar.foo/module-info.java 
    bar.foo/module-info.java:2: error: package is empty or does not exist: bar.foo
        exports bar.foo;
                   ^
    1 error
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Naman    7 年前

    相反,应该起作用的命令是:

    javac bar.foo/module-info.java bar.foo/bar/foo/wtf.java
    

    原因是,您试图编译一个需要包存在的类,即。 bar.foo

    这不是关于目录布局,而是 .class bar.foo/bar/foo/wtf.java )创建 wtf.class 因此编译器将成功编译 module-info.class

        2
  •  2
  •   cayhorstmann    7 年前

    module-info.java 到一个我没有源代码的JAR文件。我不得不添加一个空的类栏。傅。伪造并编译

    javac bar.foo/module-info.java bar.foo/bar/foo/Bogus.java