我已下载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无法确定所选项包含哪种文件。从列表中选择适当的类别。“,如下图所示:
糟糕的是我的编辑窗口中存在许多语法错误,这些错误都与Spark包和Hadoop包有关,而项目可以在这种情况下成功构建,无论上面提到的语法错误如何。
P.S。
我100%确定我的其他一些jar文件(例如.m2目录中)可以正常导入,而不会出现上述错误/警告。
如果我将相同的jar文件导入Eclipse,则会成功识别它。我已经在IDEA-13和IDEA-14中对这个罐子进行了测试,但都失败了。
通过jar -tf XXX.jar
查看此jar的内容可正常工作。
将这个有问题的.jar文件添加到我的项目后,我甚至无法查看jar文件的内容。
这是正常的.jar文件的样子:
我已经在BaiDu_YunFile上传了这个jar,有人能给我一些想法吗?非常感谢!
答案 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文件时,它已成功识别并且所有语法错误都消失了。