为什么IDEA无法识别Spark jar文件?

时间:2015-02-04 09:13:52

标签: intellij-idea jar apache-spark

我已下载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文件传输到local:

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

我打算将此jar文件导入到Intellij Idea中的项目中,但IDE无法识别此jar,并且抛出了错误:'IDEA无法确定所选项包含哪种文件。从列表中选择适当的类别。“,如下图所示:

Error when import jar in Intellij Idea

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

P.S。

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

  2. 如果我将相同的jar文件导入Eclipse,则会成功识别它。我已经在IDEA-13和IDEA-14中对这个罐子进行了测试,但都失败了。

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

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

    这是正常的.jar文件的样子: normal_jar_file

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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