mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-07 10:58:40 -04:00
Add JavaFX to module path.
This commit is contained in:
parent
b521c5b76a
commit
07d4df312d
@ -5,7 +5,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'com.github.johnrengelman.shadow' version '4.0.0'
|
id 'com.github.johnrengelman.shadow' version '5.2.0'
|
||||||
id 'application'
|
id 'application'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,18 +89,23 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
compileJava11Java {
|
||||||
into('META-INF/versions/11') {
|
javaCompiler = javaToolchains.compilerFor {
|
||||||
from sourceSets.java11.output
|
languageVersion = JavaLanguageVersion.of(11)
|
||||||
exclude "java/**"
|
|
||||||
exclude "jdk/**"
|
|
||||||
}
|
}
|
||||||
|
options.compilerArgs.add('--add-exports=java.base/jdk.internal.loader=ALL-UNNAMED')
|
||||||
|
sourceCompatibility = 11
|
||||||
|
targetCompatibility = 11
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
manifest {
|
manifest {
|
||||||
attributes 'Created-By': 'Copyright(c) 2013-2020 huangyuhui.',
|
attributes 'Created-By': 'Copyright(c) 2013-2020 huangyuhui.',
|
||||||
'Main-Class': mainClassName,
|
'Main-Class': mainClassName,
|
||||||
'Multi-Release': 'true',
|
'Multi-Release': 'true',
|
||||||
'Implementation-Version': version,
|
'Implementation-Version': version,
|
||||||
'Add-Opens': [
|
'Add-Opens': [
|
||||||
|
'java.base/java.lang',
|
||||||
'java.base/java.lang.reflect',
|
'java.base/java.lang.reflect',
|
||||||
'javafx.graphics/javafx.css',
|
'javafx.graphics/javafx.css',
|
||||||
'javafx.base/com.sun.javafx.runtime',
|
'javafx.base/com.sun.javafx.runtime',
|
||||||
@ -131,12 +136,16 @@ shadowJar {
|
|||||||
exclude 'META-INF/NOTICE.txt'
|
exclude 'META-INF/NOTICE.txt'
|
||||||
exclude 'META-INF/LICENSE.txt'
|
exclude 'META-INF/LICENSE.txt'
|
||||||
|
|
||||||
|
into('META-INF/versions/11') {
|
||||||
|
from sourceSets.java11.output
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
exclude(dependency('org.jetbrains:annotations'))
|
exclude(dependency('org.jetbrains:annotations'))
|
||||||
}
|
}
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
repack(jar.archivePath)
|
//repack(jar.archivePath)
|
||||||
attachSignature(jar.archivePath)
|
attachSignature(jar.archivePath)
|
||||||
createChecksum(jar.archivePath)
|
createChecksum(jar.archivePath)
|
||||||
}
|
}
|
||||||
@ -196,4 +205,4 @@ task makeExecutables(dependsOn: jar) doLast {
|
|||||||
|
|
||||||
build.dependsOn makePackXz
|
build.dependsOn makePackXz
|
||||||
build.dependsOn makePackGz
|
build.dependsOn makePackGz
|
||||||
build.dependsOn makeExecutables
|
build.dependsOn makeExecutables
|
@ -1,9 +1,15 @@
|
|||||||
package org.jackhuang.hmcl.util;
|
package org.jackhuang.hmcl.util;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility for Adding JavaFX to module path.
|
||||||
|
*
|
||||||
|
* @author ZekerZhayard
|
||||||
|
*/
|
||||||
public class JavaFXPatcher {
|
public class JavaFXPatcher {
|
||||||
public static void patch(Path... jarPaths) {
|
public static void patch(Set<String> modules, Path... jarPaths) {
|
||||||
// Nothing to do with Java 8
|
// Nothing to do with Java 8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,19 +6,16 @@ import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ForkJoinPool;
|
import java.util.concurrent.ForkJoinPool;
|
||||||
import java.util.concurrent.ForkJoinTask;
|
import java.util.concurrent.ForkJoinTask;
|
||||||
import java.util.logging.Level;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static java.lang.Class.forName;
|
import static java.lang.Class.forName;
|
||||||
import static org.jackhuang.hmcl.Metadata.HMCL_DIRECTORY;
|
import static org.jackhuang.hmcl.Metadata.HMCL_DIRECTORY;
|
||||||
@ -35,13 +32,21 @@ import static org.jackhuang.hmcl.util.platform.JavaVersion.CURRENT_JAVA;
|
|||||||
public class SelfDependencyPatcher {
|
public class SelfDependencyPatcher {
|
||||||
private static final Path DEPENDENCIES_DIR_PATH = HMCL_DIRECTORY.resolve("dependencies");
|
private static final Path DEPENDENCIES_DIR_PATH = HMCL_DIRECTORY.resolve("dependencies");
|
||||||
private static final String DEFAULT_JFX_VERSION = "16";
|
private static final String DEFAULT_JFX_VERSION = "16";
|
||||||
private static final Map<String, String> JFX_DEPENDENCIES_ = new HashMap<String, String>() {
|
private static final Map<String, String> JFX_DEPENDENCIES = new HashMap<>();
|
||||||
{
|
|
||||||
for (String url : new String [] { jfxUrl("base"), jfxUrl("controls"), jfxUrl("fxml"), jfxUrl("graphics"), jfxUrl("media"), jfxUrl("swing"), jfxUrl("web") }) {
|
static {
|
||||||
put(getFileName(url), url);
|
addJfxDependency("base");
|
||||||
}
|
addJfxDependency("controls");
|
||||||
}
|
addJfxDependency("fxml");
|
||||||
};
|
addJfxDependency("graphics");
|
||||||
|
addJfxDependency("media");
|
||||||
|
addJfxDependency("swing");
|
||||||
|
addJfxDependency("web");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addJfxDependency(String name) {
|
||||||
|
JFX_DEPENDENCIES.put("javafx." + name, jfxUrl(name));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Patch in any missing dependencies, if any.
|
* Patch in any missing dependencies, if any.
|
||||||
@ -111,8 +116,9 @@ public class SelfDependencyPatcher {
|
|||||||
private static void loadFromCache() throws IOException, ReflectiveOperationException {
|
private static void loadFromCache() throws IOException, ReflectiveOperationException {
|
||||||
LOG.info(" - Loading dependencies...");
|
LOG.info(" - Loading dependencies...");
|
||||||
List<Path> jarPaths = new ArrayList<>();
|
List<Path> jarPaths = new ArrayList<>();
|
||||||
Files.walk(DEPENDENCIES_DIR_PATH).filter(p -> JFX_DEPENDENCIES_.containsKey(p.getFileName().toString())).forEach(jarPaths::add);
|
List<String> jfxDepFile = JFX_DEPENDENCIES.values().stream().map(SelfDependencyPatcher::getFileName).collect(Collectors.toList());
|
||||||
JavaFXPatcher.patch(jarPaths.toArray(new Path[0]));
|
Files.walk(DEPENDENCIES_DIR_PATH).filter(p -> jfxDepFile.contains(p.getFileName().toString())).forEach(jarPaths::add);
|
||||||
|
JavaFXPatcher.patch(JFX_DEPENDENCIES.keySet(), jarPaths.toArray(new Path[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -130,8 +136,8 @@ public class SelfDependencyPatcher {
|
|||||||
|
|
||||||
ForkJoinTask<Void> task = ForkJoinPool.commonPool().submit(() -> {
|
ForkJoinTask<Void> task = ForkJoinPool.commonPool().submit(() -> {
|
||||||
// Download each dependency
|
// Download each dependency
|
||||||
Collection<String> dependencies = JFX_DEPENDENCIES_.values();
|
Collection<String> dependencies = JFX_DEPENDENCIES.values();
|
||||||
int i = 0;
|
int i = 1;
|
||||||
for (String dependencyUrlPath : dependencies) {
|
for (String dependencyUrlPath : dependencies) {
|
||||||
URL depURL = new URL(dependencyUrlPath);
|
URL depURL = new URL(dependencyUrlPath);
|
||||||
Path dependencyFilePath = DEPENDENCIES_DIR_PATH.resolve(getFileName(dependencyUrlPath));
|
Path dependencyFilePath = DEPENDENCIES_DIR_PATH.resolve(getFileName(dependencyUrlPath));
|
||||||
@ -145,6 +151,7 @@ public class SelfDependencyPatcher {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dialog.dispose();
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -160,13 +167,13 @@ public class SelfDependencyPatcher {
|
|||||||
if (!Files.isDirectory(DEPENDENCIES_DIR_PATH))
|
if (!Files.isDirectory(DEPENDENCIES_DIR_PATH))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (String name : JFX_DEPENDENCIES_.keySet()) {
|
for (String url : JFX_DEPENDENCIES.values()) {
|
||||||
Path dependencyFilePath = DEPENDENCIES_DIR_PATH.resolve(name);
|
Path dependencyFilePath = DEPENDENCIES_DIR_PATH.resolve(getFileName(url));
|
||||||
if (!Files.exists(dependencyFilePath))
|
if (!Files.exists(dependencyFilePath))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
checksum(dependencyFilePath, JFX_DEPENDENCIES_.get(name));
|
checksum(dependencyFilePath, url);
|
||||||
} catch (ChecksumMismatchException e) {
|
} catch (ChecksumMismatchException e) {
|
||||||
return false;
|
return false;
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
@ -236,7 +243,7 @@ public class SelfDependencyPatcher {
|
|||||||
private final JLabel progressText;
|
private final JLabel progressText;
|
||||||
|
|
||||||
public ProgressFrame(String title) {
|
public ProgressFrame(String title) {
|
||||||
super();
|
super((Dialog) null);
|
||||||
|
|
||||||
JPanel panel = new JPanel();
|
JPanel panel = new JPanel();
|
||||||
|
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
package java.lang.module;
|
|
||||||
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dummy java compatibility class
|
|
||||||
*
|
|
||||||
* @author xxDark
|
|
||||||
*/
|
|
||||||
public interface ModuleFinder {
|
|
||||||
//CHECKSTYLE:OFF
|
|
||||||
static ModuleFinder of(Path... entries) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
Set<ModuleReference> findAll();
|
|
||||||
//CHECKSTYLE:ON
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
package java.lang.module;
|
|
||||||
|
|
||||||
public class ModuleReference {
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
package jdk.internal.loader;
|
|
||||||
|
|
||||||
import java.lang.module.ModuleReference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dummy java compatibility class
|
|
||||||
*
|
|
||||||
* @author xxDark
|
|
||||||
*/
|
|
||||||
public class BuiltinClassLoader extends ClassLoader {
|
|
||||||
public void loadModule(ModuleReference mref) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,15 +1,78 @@
|
|||||||
package org.jackhuang.hmcl.util;
|
package org.jackhuang.hmcl.util;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.lang.invoke.MethodHandle;
|
||||||
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.lang.invoke.MethodType;
|
||||||
|
import java.lang.module.Configuration;
|
||||||
import java.lang.module.ModuleFinder;
|
import java.lang.module.ModuleFinder;
|
||||||
import java.lang.module.ModuleReference;
|
import java.lang.module.ModuleReference;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.nio.file.FileSystem;
|
||||||
|
import java.nio.file.FileSystems;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.jar.Attributes;
|
||||||
|
import java.util.jar.Manifest;
|
||||||
|
|
||||||
import jdk.internal.loader.BuiltinClassLoader;
|
import jdk.internal.loader.BuiltinClassLoader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility for Adding JavaFX to module path.
|
||||||
|
*
|
||||||
|
* @author ZekerZhayard
|
||||||
|
*/
|
||||||
public class JavaFXPatcher {
|
public class JavaFXPatcher {
|
||||||
public static void patch(Path... jarPaths) {
|
/**
|
||||||
for (ModuleReference mref : ModuleFinder.of(jarPaths).findAll()) {
|
* Add JavaFX to module path at runtime.
|
||||||
|
*
|
||||||
|
* @param modules All module names
|
||||||
|
* @param jarPaths All jar paths
|
||||||
|
* @throws ReflectiveOperationException When the call to add these jars to the system module path failed.
|
||||||
|
*/
|
||||||
|
public static void patch(Set<String> modules, Path... jarPaths) throws ReflectiveOperationException {
|
||||||
|
// Find all modules
|
||||||
|
ModuleFinder finder = ModuleFinder.of(jarPaths);
|
||||||
|
|
||||||
|
// Load all modules as unnamed module
|
||||||
|
for (ModuleReference mref : finder.findAll()) {
|
||||||
((BuiltinClassLoader) ClassLoader.getSystemClassLoader()).loadModule(mref);
|
((BuiltinClassLoader) ClassLoader.getSystemClassLoader()).loadModule(mref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Define all modules
|
||||||
|
Configuration config = Configuration.resolveAndBind(finder, List.of(ModuleLayer.boot().configuration()), finder, modules);
|
||||||
|
ModuleLayer layer = ModuleLayer.defineModules(config, List.of(ModuleLayer.boot()), name -> ClassLoader.getSystemClassLoader()).layer();
|
||||||
|
|
||||||
|
// Add-Exports and Add-Opens
|
||||||
|
try (
|
||||||
|
FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + JavaFXPatcher.class.getProtectionDomain().getCodeSource().getLocation().toURI()), Map.of("create", "true"));
|
||||||
|
InputStream stream = Files.newInputStream(fs.getPath("/META-INF/MANIFEST.MF"))
|
||||||
|
) {
|
||||||
|
// Some hacks
|
||||||
|
MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(Module.class, MethodHandles.lookup());
|
||||||
|
Attributes attributes = new Manifest(stream).getMainAttributes();
|
||||||
|
addExportsOrOpens(attributes.getValue("Add-Exports"), layer, lookup.findVirtual(Module.class, "implAddExportsToAllUnnamed", MethodType.methodType(void.class, String.class)));
|
||||||
|
addExportsOrOpens(attributes.getValue("Add-Opens"), layer, lookup.findVirtual(Module.class, "implAddOpensToAllUnnamed", MethodType.methodType(void.class, String.class)));
|
||||||
|
} catch (Throwable t) {
|
||||||
|
throw new ReflectiveOperationException(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addExportsOrOpens(String targets, ModuleLayer layer, MethodHandle handle) {
|
||||||
|
for (String target : targets.split("\\s+")) {
|
||||||
|
String[] name = target.split("/", 2); // <module>/<package>
|
||||||
|
if (name[0].startsWith("javafx.")) {
|
||||||
|
layer.findModule(name[0]).ifPresent(m -> {
|
||||||
|
try {
|
||||||
|
handle.invokeWithArguments(m, name[1]);
|
||||||
|
} catch (Throwable throwable) {
|
||||||
|
throw new RuntimeException(throwable);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,5 @@
|
|||||||
#Wed Jun 06 15:09:11 CST 2018
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-all.zip
|
|
||||||
|
53
gradlew
vendored
53
gradlew
vendored
@ -1,5 +1,21 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright 2015 the original author or authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
##
|
||||||
## Gradle start up script for UN*X
|
## Gradle start up script for UN*X
|
||||||
@ -28,7 +44,7 @@ APP_NAME="Gradle"
|
|||||||
APP_BASE_NAME=`basename "$0"`
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
DEFAULT_JVM_OPTS=""
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD="maximum"
|
MAX_FD="maximum"
|
||||||
@ -66,6 +82,7 @@ esac
|
|||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
@ -109,10 +126,11 @@ if $darwin; then
|
|||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For Cygwin, switch paths to Windows format before running java
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
if $cygwin ; then
|
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||||
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
# We build the pattern for arguments to be converted via cygpath
|
||||||
@ -138,19 +156,19 @@ if $cygwin ; then
|
|||||||
else
|
else
|
||||||
eval `echo args$i`="\"$arg\""
|
eval `echo args$i`="\"$arg\""
|
||||||
fi
|
fi
|
||||||
i=$((i+1))
|
i=`expr $i + 1`
|
||||||
done
|
done
|
||||||
case $i in
|
case $i in
|
||||||
(0) set -- ;;
|
0) set -- ;;
|
||||||
(1) set -- "$args0" ;;
|
1) set -- "$args0" ;;
|
||||||
(2) set -- "$args0" "$args1" ;;
|
2) set -- "$args0" "$args1" ;;
|
||||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
3) set -- "$args0" "$args1" "$args2" ;;
|
||||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -159,14 +177,9 @@ save () {
|
|||||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||||
echo " "
|
echo " "
|
||||||
}
|
}
|
||||||
APP_ARGS=$(save "$@")
|
APP_ARGS=`save "$@"`
|
||||||
|
|
||||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||||
|
|
||||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
|
||||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
exec "$JAVACMD" "$@"
|
||||||
|
43
gradlew.bat
vendored
43
gradlew.bat
vendored
@ -1,3 +1,19 @@
|
|||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
@if "%DEBUG%" == "" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
set DEFAULT_JVM_OPTS=
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
@ -35,7 +54,7 @@ goto fail
|
|||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
@ -45,28 +64,14 @@ echo location of your Java installation.
|
|||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windows variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
BIN
lib/JFoenix.jar
BIN
lib/JFoenix.jar
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user