【问题标题】:Why IDEA can't recognize the Spark jar file?为什么 IDEA 无法识别 Spark jar 文件?
【发布时间】:2015-04-03 17:55:14
【问题描述】:

我已经下载了Spark的源代码,解压后按照官方文档构建如下:

wget http://ftp.tc.edu.tw/pub/Apache/spark/spark-1.2.0/spark-1.2.0.tgz .
tar xzf spark-1.2.0.tgz
cd spark-1.2.0
mvn -Pyarn -Phadoop-2.2 -Dscala-2.11 -DskipTests clean package

最后我将程序集jar文件传输到本地:

scp root@host:/home/workspace/spark-1.2.0/assembly/target/scala-2.11/spark-assembly-1.2.0-hadoop2.2.0.jar ~

我打算在Intellij Idea中将这个jar文件导入到我的项目中,但是IDE无法识别这个jar,并抛出错误:'IDEA无法确定所选项目包含什么类型的文件。从列表中选择适当的类别。',如下图所示:

不好的是,我的编辑窗口有很多语法错误,都与Spark包和Hadoop包有关,而在这种情况下,无论上面提到的语法错误如何,项目都可以成功构建。

附言

  1. 我 100% 确定我的一些其他 jar 文件(例如在 .m2 目录中)可以正常导入而不会出现上述错误/警告。

  2. 如果我将相同的jar文件导入Eclipse,它会被成功识别。我在 IDEA-13 和 IDEA-14 中都测试过这个 jar,都失败了。

  3. 通过jar -tf XXX.jar查看此jar内容正常。

  4. 将这个有问题的 .jar 文件添加到我的项目中后,我什至无法查看 jar 文件的内容。

    这是一个普通的 .jar 文件的样子:

我已经在BaiDu_YunFile 上传了这个jar,有人能给我一些想法吗?非常感谢!

【问题讨论】:

  • 此消息不是错误,而是 IDE 向您提出的问题。你试过回答吗?
  • 当然,我选择了类,正如我所说,有很多语法错误,可以成功构建。 @yole
  • 这个.jar 文件的内容是什么?将其添加为库后,您可以在 IntelliJ IDEA 项目视图中看到它。
  • 其实,如果一个jar文件可以被IDEA检测到,它不会用对话框询问我,并且可以在选中的对话框中提取jar文件的内容。 @yole
  • 这就是重点,我无法在IDEA项目视图中提取.jar文件的内容。我现在将在我的问题中附加这种现象。@yole

标签: intellij-idea jar apache-spark


【解决方案1】:

查看 Intellij IDEA 使用的 jdk 版本(Perfrence-->About Intellij IDEA)。如果版本太低,则无法正确解析 jar。如果您使用的是 mac IDEA,只需在 IDEA 内容文件夹的 info.plist 中将 jvm 版本更新为 1.7 或更高版本即可。

【讨论】:

  • 我的是JDK1.7和IDEA_14
【解决方案2】:

我对另一个 jar 文件 (libsvm.jar) 也有同样的问题。通过从 GitHub 下载源代码并调用 make 命令,重新创建了 .jar 文件,我不再遇到任何问题。所以我猜这个 jar 文件可能是用一些不兼容的 Java 版本创建的。

【讨论】:

    【解决方案3】:

    我今天在使用通过 brew 安装的 Spark 1.5.0 提供的程序集 jar 时遇到了同样的问题。然后我发现我的笔记本电脑上有一个 1.4.1 版本,它有spark-assembly-1.4.1-hadoop2.4.0.jar。当我在IntelliJ中使用这个jar文件时,它被成功识别,所有语法错误都消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 2017-12-14
      • 2015-06-21
      • 2022-01-10
      • 2019-09-02
      相关资源
      最近更新 更多