当前位置: 首页 > 面试题库 >

如何以OS独立的方式设置Gradle`options.bootClasspath`?

鞠修雅
2023-03-14
问题内容

因为我的Java源和目标必须与JRE 1.6兼容,所以我需要设置options.bootClasspath一个包含1.6
rt.jar和和1.6版本的路径jce.jar。它必须同时在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指向JDK 1.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
        }
    }
}

此方法自动检测环境变量的存在,并自动bootClasspath为所有声明sourceCompatibility为1.6的模块设置。

options.fork = true当您使用需要bootClasspath



 类似资料:
  • 因为我的Java源代码和目标必须与JRE1.6兼容,所以我需要将设置为包含和1.6版本的路径。它必须构建在Windows和Unix(Linux/Solaris)上。做这件事的适当方法是什么?我现在在我的顶级中使用了以下方法,它起作用了,但似乎远不优雅,特别是与OS相关的分隔符或:

  • 问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。

  • 问题内容: 我有一个奇怪的问题。我试图以编程方式将dataSource分配给表。 我已使用界面生成器在ViewController中为其创建了一个和IBOutlet。我创建了一个实现的类。我将表的设置为dataSource的实例。一切都会编译并正常运行,直到设置dataSource的行在运行时执行。 错误是并且定义线突出显示。 有什么想法为什么我得到这个运行时错误?我正在Swift中使用XCode

  • 服务器时间在单击按钮事件中自动设置为我的设备。

  • 问题内容: 这个问题类似于: jsf:在UI中绑定到inputtext的integer属性在提交时设置为零 但是我对解决方案并不完全满意。上下文是相同的:我有一个Web表单,需要一个Integer值。如果文本框为空,我希望我的Integer字段为“null”,但是EL Parser会自动将我的id字段设置为“ 0”。 我可以通过在本地Tomcat VM中设置JVM参数来解决此问题: -Dorg.a

  • 问题内容: 我正在使用来自Android百分比支持包的PercentRelativeLayout。这就是我的布局。 我想以编程方式更改高度。我该如何使用或其他方式进行操作。 问题答案: 您要设置一个新的百分比值吗?如果是,则需要: