Я пытаюсь скомпилировать WALA на OSX и получить запутанную ошибку, что он не может найти 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"
'
Команда и ошибка:
'
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, возможно, путем редактирования .mavenrc
.