【问题标题】:Install Apache Arrow Java in Eclipse在 Eclipse 中安装 Apache Arrow Java
【发布时间】:2020-09-08 08:12:52
【问题描述】:

我目前正在尝试在 Eclipse 中安装 Apache Arrow for Java,但遇到了一些麻烦。

我在 https://search.maven.org/search?q=g:org.apache.arrow%20AND%20v:0.17.1 上找到了 Java 包

因为没有找到安装的相关信息,所以只下载了所有的jar文件:

  • 箭头性能-0.17.1.jar
  • 箭头算法-0.17.1.jar
  • arrow-avro-0.17.1.jar
  • flight-grpc-0.17.1.jar
  • flight-core-0.17.1.jar
  • arrow-plasma-0.17.1.jar
  • arrow-jdbc-0.17.1.jar
  • 箭头工具-0.17.1.jar
  • arrow-vector-0.17.1.jar
  • arrow-memory-0.17.1.jar
  • 箭头格式-0.17.1.jar

然后我在 Eclipse 中创建了一个新的 Java 项目,并将所有 jar 文件复制到所述项目中的文件夹“lib”中。然后,我将它们添加到Project -> Properties -> Java Build Path -> Libraries -> Add JARs 下,并选择了我的“lib”文件夹中的所有 jar 并应用。

之后,我尝试运行我在https://github.com/animeshtrivedi/blog/blob/master/post/2017-12-26-arrow.md 上找到的以下 java 代码:

import org.apache.arrow.vector.types.pojo.*;

public class FieldTesting {
    public static void main(String[] args) {
        Field intField = new Field("int", FieldType.nullable(new ArrowType.Int(32, true)), null);
    }
}

我收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.apache.arrow.vector.types.pojo.Field.<clinit>(Field.java:55)
    at FieldTesting.main(FieldTesting.java:6)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

当我转到Referenced Libraries -&gt; arrow-vector-0.17.1.jar -&gt; org.apache.arrow.vector.types.pojo -&gt; Field.class 时,它显示“找不到源”,如下所示。我需要手动附加源吗?

在我下载 jar 文件的 Apache Arrow 网站上,我还可以下载“...sources.jar”文件。我还需要下载这些并将它们添加到“Java Build Path”吗? (这似乎需要做很多工作)。

还有一个“arrow-java-root”zip 文件夹,我可以用它来添加库吗?


我不熟悉向 Java 添加库,所以我不知道如何解决这个问题。任何帮助表示赞赏。

(我使用的是 Windows 10,Java 8)


解决方案:

我将我的项目转换为 Maven 项目 (Configure -&gt; Convert to Maven Project) 并添加了依赖项 "arrow-java-root"。 (https://stackoverflow.com/a/26350902) 感谢 andrewjames 指出这一点。

但是,我现在在运行程序时收到以下消息:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

但程序仍然正确终止,因为如果我添加:

System.out.println(intField.toString())

它打印上面消息之后的字段。

【问题讨论】:

  • 该异常与没有源无关 - 您不需要源即可在 jar 中运行已编译的代码。看起来 Apache Arrow 需要 slf4j 日志记录 jar。
  • 我建议使用 Maven(与 Eclipse 捆绑)来为您处理项目依赖项。请参阅here 获取一些提示。
  • @andrewjames 谢谢,我将我的项目转换为 Maven 项目并添加了依赖项“arrow-java-root”。它现在似乎正在工作:)

标签: java windows eclipse jar apache-arrow


【解决方案1】:

您收到的消息是因为您没有 log4j2 配置文件,并且记录器对此发出警告,因此它将使用默认设置,如果您想摆脱该消息,您可以使用以下内容在 src/main/resources 文件夹中创建一个 log4j2.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

你可以阅读更多关于配置 log4j here

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 2011-06-10
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多