I\'m getting a error trying to compile a simple code in Eclipse. I\'m using jre8.
For example, when I try to compile this code:
import java.util.ArrayLis
The first Eclipse version supporting Java 8 was Eclipse Kepler SR2 (4.3.2) with an additional patch. (See: Installing Java™ 8 Support in Eclipse Kepler SR2, and the corresponding Marketplace Item that needs to be installed: Java 8 support for Eclipse Kepler SR2).
In my opinion you should udpate to the latest Eclipse Version.
With Luna SR2 (4.4.2) no additional patch is necessary.
Windows > Preferences: Java > Installed JREs
If this is not the case you can add a new JRE with the add button.
JRE System Library
== JavaSE-1.8
for your ProjectIn the Package Explorer, you should see the Java version:
If this is not correct you should open the context menu the JRE System Library
item and select the Properties
menu entry.
In your project you have a .classpath
file (Use the Navigator View
if you do not see the file), that should looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Project Menu > Clean...
Select your project from the list or "Clean all projects" and "Start a build immediately"
See also:
This is because the BytecodeParser class in soot.JastAddJ doesn't support higher version of java class file format.The CONSTANT_MethodHandle,CONSTANT_MethodType and CONSTANT_InvokeDynamic of constant pool type missed.Below is my solution to fix the question:
(1) add the type int soot.JastAddJ.BytecodeParser:
private static final int CONSTANT_MethodHandle=15;
private static final int CONSTANT_MethodType=16;
private static final int CONSTANT_InvokeDynamic=18;
(2) add 3 classes to support the parse:
in the method parseEntry
of soot.JastAddJ.BytecodeParser,add
CONSTANT_MethodHandle_Info, CONSTANT_MethodType_Info, CONSTANT_InvokeDynamic_Info
in the switch case block.
Now,soot can run successfully.