diff --git a/README.md b/README.md index 8b930fa..f80d93e 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,14 @@ wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.0.0.jar mvn install:install-file -Dfile=apktool_2.0.0.jar -DgroupId=apktool -DartifactId=apktool -Dpackaging=jar -Dversion=2.0.0 ``` +### WALA configuration +WALA needs to know the location of the Java 6 JDK. This is configured in the ``wala.properties`` file, e.g. +``` +cd DASCA/ +echo "java_runtime_dir = /usr/lib/jvm/java-6-jdk" >> externals/WALA/com.ibm.wala.core/dat/wala.properties +``` +Don't forget to adjust the path to the Java 6 JDK accordingly. + ### How to Compile First resolve the dependencies using maven: ``` @@ -53,6 +61,23 @@ workspace using `File -> Import -> Maven -> Existing Maven Projects`: While some Wala projects may contain compilation errors, all DASCA projects (i.e., `eu.aniketos.dasca.*`) should compile without errors. +## Troubleshooting +### Unavailable external JARs +The build process for WALA uses Ant scripts to download JAR libraries from third-party web sites, which might +become unavailable. This leads to Maven throwing errors when compiling WALA due to unavailable JAR files, e.g. +``` +[ERROR] DASCA/externals/WALA/com.ibm.wala.cast.js.test.data/build.xml:45: Can't get http://ajaxslt.googlecode.com/files/ajaxslt-0-7.tar.gz to DASCA/externals/WALA/com.ibm.wala.cast.js.test.data/temp.folder/ajaxslt-0-7.tar.gz +``` +If the affected sub-project is not needed for the DASCA projects (such as the com.ibm.wala.cast.js.test.data +project), the error might be resolved by skipping the compilation of a few WALA projects, e.g. +``` +mvn -P wala -pl '!:com.ibm.wala.cast.js.test.data,!:com.ibm.wala.cast.js.html.nu_validator,!:com.ibm.wala.cast.js.test,!:com.ibm.wala.cast.js.rhino.test' install -DskipTests=true -q +``` + +### WALA throws errors such as ``java.lang.Error: unexpected dynamic invoke type 8`` +Make sure the ``wala.properties`` file is correctly configured with the path to the Java 6 JDK. By default, +WALA uses the JDK that is runs with also for the analysis, which is likely to be Java 8. + ## Team Main contact: [Achim D. Brucker](http://www.brucker.ch/)