在Ubuntu终端上编译复杂的Java程序

在Ubuntu终端上编译复杂的Java程序,java,eclipse,ubuntu,compilation,Java,Eclipse,Ubuntu,Compilation,我已经在Ubuntu中导出了我的Eclipse Java项目,所有的.Java和.class文件都已准备就绪 本项目由以下部分组成: - src - package1 - file1.java ... - fileN.java ... - packageM - fileM.java ... - fileN.java 要运行该程序,我使用以下命令: java -Djava.libra

我已经在Ubuntu中导出了我的Eclipse Java项目,所有的
.Java
.class
文件都已准备就绪

本项目由以下部分组成:

- src
   - package1
        - file1.java
        ...
        - fileN.java
   ...
   - packageM
        - fileM.java
        ...
        - fileN.java
要运行该程序,我使用以下命令:

java -Djava.library.path="/path/to/opencv/lib" -cp lib/*:src package.to.main.class.MainClass 
现在,我只更改了类中的一行(它不是
MainClass
),我想重新编译并运行所有内容。但是,当以以下方式尝试使用
javac
时:

javac path/to/main/class/MainClass.java
我获得了数百万个错误,因为:

  • 找不到库
  • 其他Java文件没有链接
一些例子:

src/it/polimi/tweetcrawlingpipeline/pipeline/TweetCrawlingPipeline.java:7:    error: package org.opencv.core does not exist
import org.opencv.core.Core;
                  ^
  symbol:   class SVMSample
  location: class TweetCrawlingPipeline
  src/it/polimi/tweetcrawlingpipeline/pipeline/TweetCrawlingPipeline.java:158: error: cannot find symbol
   public GenericClassifier<SVMSample> getTextClassifier() {
               ^
src/it/polimi/tweetscrawlingpipeline/pipeline/tweetscrawlingpipeline.java:7:错误:包org.opencv.core不存在
导入org.opencv.core.core;
^
符号:SVMSample类
位置:类TweetScrawlingPipeline
src/it/polimi/TweetScrawlingPipeline/pipeline/TweetScrawlingPipeline.java:158:错误:找不到符号
公共泛型分类器getTextClassifier(){
^
如何解决这些问题


谢谢。

这可能不是您想要的答案,但是使用javac在命令行中编译很快就会变得很痛苦。除非您将命令和类路径放入shell脚本中,否则它可能会变得很麻烦


如果可能的话,我建议使用ant、gradle甚至maven。maven可能有些过分,但ant是一个合理的开始。

您能提供一个错误示例吗?您需要在类路径中指定(使用
-cp
)编译器可以在其中找到这些库JAR和其他文件。我添加了一些错误示例。@OriLentz您可以提供一个示例吗?是的,将其重定向到当前的
。class
文件所在的位置。例如:
javac-cp path/to/your/project/;path/to/your/to/libraries path/to/main/class/MainClass。java
这个过程不会重复吗替换那些
.class
文件?由于与OpenCV的兼容性问题,我无法使用maven。如何生成ANT文件?所以ANT只是一个程序,甚至可能已经存在(“哪个ANT”)或者只是“sudo apt get-u install ant”。构建文件通常命名为build.xml,web上应该有很多关于如何设置它的文档。对于编译一组类来说,这相当简单。