java - 在 osx "the import java.lang.invoke cannot be resolved"上构建 WALA

标签 java macos maven

我试图在 OSX 上编译 WALA 并遇到一个令人困惑的错误,它找不到 java.lang.invoke.CallSite。奇怪的是,我可以编写一个导入 java.lang.invoke.* 的简单项目,然后用 javac 编译它就好了。

感谢您的帮助!

Java 版本: `

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

`

mvn 版本: `

JAVA_HOME:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 09:22:22-0600)
Maven home: /opt/apache-maven-3.1.1
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac"

`

命令和错误:

mvn clean verify -DskipTests=true -q

`

JAVA_HOME:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
[INFO] Building jar: /Users/s/Documents/source/WALA/com.ibm.wala.util/walaUtil.jar
[INFO] Building jar: /Users/s/Documents/source/WALA/com.ibm.wala.util/target/com.ibm.wala.util-1.3.4-SNAPSHOT.jar
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:0.19.0:compile (default-compile) on project com.ibm.wala.shrike: Compilation failure: Compilation failure:
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[3]
[ERROR] import java.lang.invoke.CallSite;
[ERROR] ^^^^^^^^^^^^^^^^
[ERROR] The import java.lang.invoke cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[4]
[ERROR] import java.lang.invoke.MethodHandles;
[ERROR] ^^^^^^^^^^^^^^^^
[ERROR] The import java.lang.invoke cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[5]
[ERROR] import java.lang.invoke.MethodType;
[ERROR] ^^^^^^^^^^^^^^^^
[ERROR] The import java.lang.invoke cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[132]
[ERROR] public CallSite bootstrap(Class cl) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
[ERROR] ^^^^^^^^
[ERROR] CallSite cannot be resolved to a type
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[136]
[ERROR] MethodType bt = MethodType.fromMethodDescriptorString(bootstrap.methodType(), bootstrapCL);
[ERROR] ^^^^^^^^^^
[ERROR] MethodType cannot be resolved to a type
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[136]
[ERROR] MethodType bt = MethodType.fromMethodDescriptorString(bootstrap.methodType(), bootstrapCL);
[ERROR] ^^^^^^^^^^
[ERROR] MethodType cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[139]
[ERROR] args[0] = MethodHandles.lookup().in(cl);
[ERROR] ^^^^^^^^^^^^^
[ERROR] MethodHandles cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[141]
[ERROR] args[2] = MethodType.fromMethodDescriptorString(getMethodSignature(), cl.getClassLoader());
[ERROR] ^^^^^^^^^^
[ERROR] MethodType cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/InvokeDynamicInstruction.java:[146]
[ERROR] return (CallSite) bootstrap.invoke(null, args);
[ERROR] ^^^^^^^^
[ERROR] CallSite cannot be resolved to a type
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/shrikeCT/tools/BootstrapDumper.java:[17]
[ERROR] import java.lang.invoke.CallSite;
[ERROR] ^^^^^^^^^^^^^^^^
[ERROR] The import java.lang.invoke cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/shrikeCT/tools/BootstrapDumper.java:[18]
[ERROR] import java.lang.invoke.MethodHandles;
[ERROR] ^^^^^^^^^^^^^^^^
[ERROR] The import java.lang.invoke cannot be resolved
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/shrikeCT/tools/BootstrapDumper.java:[86]
[ERROR] CallSite target = ((InvokeDynamicInstruction)inst).bootstrap(cl);
[ERROR] ^^^^^^^^
[ERROR] CallSite cannot be resolved to a type
[ERROR] /Users/s/Documents/source/WALA/com.ibm.wala.shrike/src/com/ibm/wala/shrikeBT/shrikeCT/tools/BootstrapDumper.java:[86]
[ERROR] CallSite target = ((InvokeDynamicInstruction)inst).bootstrap(cl);
[ERROR] ^^^^^^^^^
[ERROR] The method bootstrap(Class) from the type InvokeDynamicInstruction refers to the missing type CallSite
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :com.ibm.wala.shrike

`

最佳答案

java.lang.invoke 包是在 Java 7 中引入的。正如您的 mvn version 命令所示,Maven 使用的是 Java 6:

Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

您需要配置 Maven 以使用 Java 7,probably by editing .mavenrc .

关于java - 在 osx "the import java.lang.invoke cannot be resolved"上构建 WALA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613003/

相关文章:

Python 2.7 IDLE 在 Mac OSX 上不断崩溃

java - Maven:从编译中排除文件在 IntelliJ IDEA 中不起作用

linux - 用于在不同终端中运行脚本中的每个命令的 Shell 脚本

java - 无法反序列化 `java.time.Instant` 类型的值 - Jackson

java - 在完整的 Java 项目中添加对 Kotlin 库的依赖关系

java - 确定 2 个直角棱镜是否接触/相交

git - 当您使用 git 时,Maven pom.xml - <scm> 内的 <tag> 元素的用法是什么

java - 尝试从 mvn clean 安装但与 eclipse JunitTest 一起正常工作时,wiremock 抛出 Nullpointer

macos - OS X Mountain Lion Java 版本

macos - 从 Mac OS X 连接到 Azure SQL 数据仓库