因为我的Java源代码和目标必须与JRE1.6兼容,所以我需要将options.bootclasspath
设置为包含rt.jar
和jce.jar
1.6版本的路径。它必须构建在Windows和Unix(Linux/Solaris)上。做这件事的适当方法是什么?我现在在我的顶级build.gradle
中使用了以下方法,它起作用了,但似乎远不优雅,特别是与OS相关的分隔符:
或;
:
import org.apache.tools.ant.taskdefs.condition.Os
subprojects {
apply plugin: 'java'
compileJava {
sourceCompatibility = 1.6
targetCompatibility = 1.6
def java6_home = System.getenv("JAVA_HOME_6")
def java6_lib = "C:/localdata/Program Files (x86)/Java/jdk1.6.0_45/jre/lib/"
if (java6_home != null) {
java6_lib = java6_home + "/jre/lib/"
}
def sep = ':'
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
sep = ';'
}
options.bootClasspath = java6_lib + "rt.jar" + sep + java6_lib + "jce.jar"
}
}
我使用以下代码(假设JDK6_HOME指向JDK1.6安装的根目录):
tasks.withType(JavaCompile) {
doFirst {
if (sourceCompatibility == '1.6' && System.env.JDK6_HOME != null) {
options.fork = true
options.bootClasspath = "$System.env.JDK6_HOME/jre/lib/rt.jar"
options.bootClasspath += "$File.pathSeparator$System.env.JDK6_HOME/jre/lib/jsse.jar"
// use the line above as an example to add jce.jar
// and other specific JDK jars
}
}
}
此方法自动检测环境变量的存在,并为所有声明SourceCompatibility
为1.6的模块自动设置Bootclasspath
。
使用bootclasspath
时,options.fork=true
是必需的。
问题内容: 因为我的Java源和目标必须与JRE 1.6兼容,所以我需要设置一个包含1.6 和和1.6版本的路径。它必须同时在Windows和Unix(Linux / Solaris)上构建。正确的方法是什么?现在,我在顶层使用以下方法,它可以工作,但看起来还很不完善,尤其是依赖于OS的分隔符或: 问题答案: 我正在使用以下代码(假设JDK6_HOME指向JDK 1.6安装的根目录): 此方法自动
问题内容: 要在npm脚本中访问变量,请在您的计算机中执行以下操作: 问题是只能在Unix下使用,而在Windows上则不能使用。 有没有办法使该操作系统独立?如果npm可以在调用命令之前进行这样的变量扩展,那就太好了。 问题答案: 要使其跨平台,请使用:
问题内容: 我想确定我的Java程序正在以编程方式运行的主机的操作系统(例如:我希望能够基于我在Windows还是Unix平台上加载不同的属性)。做到100%可靠性的最安全方法是什么? 问题答案: 你可以使用: PS:你可能会发现此代码有用: 它所做的只是打印出Java实现提供的所有属性。通过它,你可以了解可以通过属性了解Java环境的内容。
我试图在我的应用程序中使用谷歌云翻译API,但当我添加: 发生以下错误: 找到了多个具有操作系统独立路径“META-INF/INDEX”的文件。列表'。 添加此选项并不能解决问题:
在我的项目中添加了videoCompressor库后,我开始遇到这个问题。 发现多个文件具有独立于操作系统的路径'builddef.lst' 在构建时获取这些消息日志。 Google的问题读取这些线程,通过在gradle文件中添加忽略重复文件提供了解决方案,在android{}中添加。 问题还在?问题是我将如何知道哪些依赖项或文件是复制或制造问题而构建。我无法使用上面的生成日志跟踪该文件。
问题内容: 我想知道当前的日期和时间。 代码 表示运行程序的系统的日期和时间,并且系统日期可能是错误的。 那么,无论运行哪个程序的系统日期和时间,有什么方法可以获取正确的当前日期和时间? 问题答案: 如果您在互联网上,则可以询问一个已知且受信任的时间源。如果运行您的程序的人希望阻止您的程序执行此操作(例如,如果您给他们授予了限时许可证,而他们又不想花更多的时间),那么他们可能会欺骗或阻止该连接。