sourceCompatibility = 1.6
(当然,我还在一些试验中添加了targetcompatibility=1.6
,但这不会有什么不同)
为了检查结果是否与1.6实际兼容,我将得到的jar、cd
解压缩到web-inf/classes
文件夹中,并在遇到的第一个.class
文件上使用javap-verbose
。但是无论我是否设置了目标兼容性,或者我是否使用1.5而不是1.6或者我是否将其指定为字符串('1.6'
),每次javap的结果都是
minor version: 0
major version: 51
这意味着它是Java1.7字节码,这是错误的。
有什么想法为什么sourcecompatibility
-设置不起作用吗?还是javap
不是检查兼容性的正确方法?
更新:是的,这实际上是一个多项目构建,但我只检查了其中一个子项目的构建结果。在这个子项目的构建文件中,我做了上面提到的更改,以确保它们被实际应用。此外,我在根项目的构建文件中添加了以下内容(正如@vidya所建议的):
allprojects {
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
但这也无济于事。
compileJava.doFirst {
println "source compatibility " + sourceCompatibility
}
更新3:我将构建的脚本改为只使用java插件(因此只构造一些JAR),并删除了war
、jetty
和GWT
插件的使用。但是,尽管我在allprojects
部分和一些子项目中设置了sourceCompatibility 1.7,但是所有项目都设置为sourceCompatibility 1.7。现在在构建脚本中所剩下的就是声明一些体面(maven、文件和其他子项目)、声明要使用的存储库、声明其他一些任务(构建任务不依赖于这些任务,因此它不应该受到影响)以及为创建的jar文件配置清单文件(我在清单文件中添加了一个规范、一个实现版本和标题)。
我看不出这些会对sourceCompatibility设置有什么影响。
这种行为似乎是由于在apply plugin:'java'
之前指定sourcecompatibility
引起的,如果您试图在allprojects
中设置兼容性选项,就会发生这种情况。
在我的设置中,可以通过替换:
allprojects {
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
与:
allprojects {
apply plugin: 'java'
sourceCompatibility = 1.6
targetCompatibility = 1.6
}
有没有用nuxt3写的开源的项目?像thinkcmf那样的,前后台都有的?
我在Gradle.properties中使用sourceCompatibility=1.7,Gradle JVM(设置,Gradle,Intellij IDEA)是1.8.0_171和 在大楼里。 当我运行构建任务(tasks->build->build Intellij IDEA)时,我在compileJava任务期间得到“错误:不兼容类型:推断的类型不符合等式约束”。 如果我将Gradle J
我最终将两个不同的pom文件(一个用于常规jar文件,一个用于影子jar)发布到同一个URL,其中一个覆盖另一个。这种行为导致客户下载默认的jar,但在pom文件中没有任何依赖项。 我尝试了许多方法来禁用shadowJar pom文件,但没有任何成功。我怎么让它工作?
我知道我能做到 但这也会得到projA和projB,我只想在c,d,E上运行任务...请让我知道实现这一点的最佳方法。
我有一个多项目分级构建,我想应用其中一个子项目作为所有其他子项目的依赖项。 也就是说,如果我指定:
问题内容: 我有带项目的TreeTableView。我希望该用户看到“箭头”展开,即使该项目没有子代也是如此。原因很简单- 延迟加载。当用户单击箭头程序时,将检查是否存在可能的项目(例如,在DB中)。如果存在该项目的子项,则将它们添加到项目。如果不存在,则“箭头”必须消失。怎么做? 问题答案: 的Javadocs显示了一个基本上执行此操作的示例。您可以重写和方法以延迟实例化子级。这是适用于的相同想