diff --git a/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java b/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java
index b8ffa37f9..6f450759b 100644
--- a/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java
+++ b/src/main/java/com/jayway/maven/plugins/android/AndroidSdk.java
@@ -134,7 +134,7 @@ private void assertPathIsDirectory(final File path) {
/**
* Returns the complete path for a tool, based on this SDK.
*
- * @param tool which tool, for example adb
.
+ * @param tool which tool, for example adb
or dx.jar
.
* @return the complete path as a String
, including the tool's filename.
*/
public String getPathForTool(String tool) {
@@ -143,12 +143,15 @@ public String getPathForTool(String tool) {
sdkPath + "/" + PLATFORM_TOOLS_FOLDER_NAME + "/" + tool,
sdkPath + "/" + PLATFORM_TOOLS_FOLDER_NAME + "/" + tool + ".exe",
sdkPath + "/" + PLATFORM_TOOLS_FOLDER_NAME + "/" + tool + ".bat",
+ sdkPath + "/" + PLATFORM_TOOLS_FOLDER_NAME + "/lib/" + tool,
getPlatform() + "/tools/" + tool,
getPlatform() + "/tools/" + tool + ".exe",
getPlatform() + "/tools/" + tool + ".bat",
+ getPlatform() + "/tools/lib/" + tool,
sdkPath + "/tools/" + tool,
sdkPath + "/tools/" + tool + ".exe",
- sdkPath + "/tools/" + tool + ".bat"
+ sdkPath + "/tools/" + tool + ".bat",
+ sdkPath + "/tools/lib/" + tool
};
for (String possiblePath : possiblePaths) {
diff --git a/src/main/java/com/jayway/maven/plugins/android/phase08preparepackage/DexMojo.java b/src/main/java/com/jayway/maven/plugins/android/phase08preparepackage/DexMojo.java
index d01b409be..309630b81 100644
--- a/src/main/java/com/jayway/maven/plugins/android/phase08preparepackage/DexMojo.java
+++ b/src/main/java/com/jayway/maven/plugins/android/phase08preparepackage/DexMojo.java
@@ -85,6 +85,8 @@ private void runDex(CommandExecutor executor, File outputFile,
File inputFile) throws MojoExecutionException {
File classesOutputDirectory = new File(project.getBuild().getDirectory(), "android-classes");
List commands = new ArrayList();
+ commands.add("-jar");
+ commands.add(getAndroidSdk().getPathForTool("dx.jar"));
if (jvmArguments != null) {
for (String jvmArgument : jvmArguments) {
if (jvmArgument != null) {
@@ -101,14 +103,26 @@ private void runDex(CommandExecutor executor, File outputFile,
if (coreLibrary) {
commands.add("--core-library");
}
- getLog().info(getAndroidSdk().getPathForTool("dx") + " " + commands.toString());
+ final String javaExecutable = getJavaExecutable().getAbsolutePath();
+ getLog().info(javaExecutable + " " + commands.toString());
try {
- executor.executeCommand(getAndroidSdk().getPathForTool("dx"), commands, project.getBasedir(), false);
+ executor.executeCommand(javaExecutable, commands, project.getBasedir(), false);
} catch (ExecutionException e) {
throw new MojoExecutionException("", e);
}
}
+ /**
+ * Figure out the full path to the current java executable.
+ *
+ * @return the full path to the current java executable.
+ */
+ private static File getJavaExecutable() {
+ final String javaHome = System.getProperty("java.home");
+ final String slash = File.separator;
+ return new File(javaHome + slash + "bin" + slash + "java");
+ }
+
protected File createApkSourcesFile() throws MojoExecutionException {
final File apksources = new File(project.getBuild().getDirectory(), project.getBuild().getFinalName() + ".apksources");
FileUtils.deleteQuietly(apksources);