【问题标题】:Java and compiling when not using a IDE不使用 IDE 时的 Java 和编译
【发布时间】:2011-06-16 17:24:28
【问题描述】:

我理解在 java 中你被强制输入每个类的单个文件。

所以如果我有这样的课程:

/my_project/main.java
/my_project/classes/user.java
/my_project/classes/other.java

而我的 main.java 引用了用户和其他文件,我将如何通过命令行编译它?

如果我有我引用的外部 .jar,并且我将它们放在一个特定的文件夹中,我怎么能在我的编译中也包含它? (或者有没有一个通用的地方我可以把它们放在会自动拾取它们的地方,就像 python 是怎么做的那样)

【问题讨论】:

    标签: java packages javac


    【解决方案1】:

    要编译,您需要从 my_project 文件夹中指定每个源文件:

    javac classes/user.java classes/other.java main.java
    

    您还可以使用 -cp 选项为您的类路径指定 jar 文件:

    javac -cp myjarfile.jar main.java
    

    您可能还需要调整 -cp 标志以确保您的类文件夹位于类路径中。

    【讨论】:

      【解决方案2】:

      首先,让 Java 类以小写开头是一种糟糕的风格。

      只有公共类需要在它们自己的文件中,但您可以在同一个文件中添加任意数量的包私有类(尽管这被认为是糟糕的风格)。

      也就是说,编译代码的最简单方法是:

      javac /my_project/main.java /my_project/classes/user.java /my_project/classes/other.java
      

      无论如何,正确的代码布局应该是类位于与其包匹配的目录结构中。

      编辑:这里有一个相当好的惯例解释http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter05/packagesImport.html

      【讨论】:

      • 谢谢,我希望有 /my_project/classes/*.java 类型的命令。
      • 您可以这样做,但 *.class 由您的 shell 解析。在 unix 环境中,这也应该可以工作:javac /my_project/*.java /my_project/classes/*.java.
      【解决方案3】:

      除了上述答案之外,您还可以使用Apache Ant 之类的东西,以便更轻松地配置您的构建(如果它变得复杂)。

      【讨论】:

        【解决方案4】:

        查看documentation for javac。可以传递多个源文件,也可以指定源目录。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-25
          • 1970-01-01
          • 2014-05-04
          • 1970-01-01
          • 2012-12-22
          相关资源
          最近更新 更多