【问题标题】:Running java program by considering import dependencies通过考虑导入依赖来运行java程序
【发布时间】:2015-02-20 12:58:22
【问题描述】:

我在某个位置有 java 文件。

/root/Desktop/software/UIMA/yagogit/yodaqa/src/main/java/cz/brmlab/yodaqa/analysis/question/FocusGenerator.java

此文件是整个项目的一部分 - FocusGenerator.java

它正在从 UIMA 和其他几个包中导入几个类。 (我已经在我的系统上配置了 UIMA)

import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.fit.component.JCasAnnotator_ImplBase;
import org.apache.uima.UimaContext;
import org.apache.uima.resource.ResourceInitializationException;
import cz.brmlab.yodaqa.model.TyCor.LAT;
import cz.brmlab.yodaqa.provider.OpenNlpNamedEntities;
import de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.POS;
import de.tudarmstadt.ukp.dkpro.core.api.ner.type.NamedEntity;

按照自述文件执行整个项目时,它运行良好。但我想测试每个单独的程序,就像上面提到的那样。当我尝试使用javac 进行编译时,会出现错误,cannot find symbol 如下

ATByFocus.java:77: cannot find symbol
symbol  : class ImplicitQLAT
location: class cz.brmlab.yodaqa.analysis.question.LATByFocus
            addFocusLAT(jcas, focus, "amount", null, 33914, 0.0, new ImplicitQLAT(jcas));
                                                                     ^
LATByFocus.java:83: cannot find symbol
symbol  : class LAT
location: class cz.brmlab.yodaqa.analysis.question.LATByFocus
            addFocusLAT(jcas, focus, text, pos, 0, 0.0, new LAT(jcas));

等等。

执行此文件的正确方法是什么。我尝试将它导入到 Eclipse 中,但在 Eclipse 中它也无法作为项目导入。

【问题讨论】:

  • 真的,真的,真的不应该以 root 身份执行此操作。不,真的。
  • 这有点像不系安全带以 80 英里/小时的速度行驶。只要您不崩溃就可以了...您在 Linux 系统上获得的大部分保护来自以非特权用户而不是 root 用户身份执行正常操作,这尤其适用于登录图形窗口系统。 Linux 比 Windows 干净得多,它允许您在没有 root/管理员权限的情况下完成日常工作。
  • 这似乎是问题所在。如果您想使用外部 JAR,您必须通过“-cp”命令行开关向 javac 命令提供要使用的 JAR 的类路径。请参阅javac 的文档:docs.oracle.com/javase/7/docs/technotes/tools/solaris/…。因此,电话将是例如javac -cp /path/to/userjar1.jar:/path/to/usejar2.jar filename.java
  • 如果你想使用外部项目的某些类,推荐的方式是使用支持的构建工具来构建项目JAR。这里似乎是 Gradle。然后在您的项目中使用这些 JAR。但这仅使用javac 并不容易。不仅有构建工具创建的 JAR,还有 yodaqa 项目使用的所有依赖项。您还必须在类路径中包含所有这些 JAR。因此,最好的方法是为您自己的项目也使用具有自动依赖关系解析的构建工具,例如 Maven 或 Gradle。
  • 您应该了解更多关于 Java、JVM、JAR 以及 Maven 和 Gradle 等构建工具的工作原理。这并不容易,但值得。

标签: java import uima


【解决方案1】:

很难单独构建 YodaQA 的各个部分。我认为在 YodaQA 中工作要简单得多,但是创建您的自定义主类,它将直接调用 FocusGenerator 或您想要的任何其他类。

要添加另一个主类并执行它,您需要添加另一个 gradle 目标。请参阅 build.gradle 以获得一些示例:tsvgs、biocrftrain 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2016-02-07
    相关资源
    最近更新 更多