如何更改cordova子项目使用的java版本
Posted
技术标签:
【中文标题】如何更改cordova子项目使用的java版本【英文标题】:How to change java version used by cordova subprojects 【发布时间】:2015-09-01 16:46:50 【问题描述】:我有一个 Cordova 项目,我正在为它构建一个 android 插件。然后,我的插件使用了一个使用菱形操作 () 的库。我尝试运行它,但收到此错误:
diamond operator is not supported in -source 1.6
ArrayList<Node> selectedProviders = new ArrayList<>();
^
(use -source 7 or higher to enable diamond operator)
当我跑步时:
$ java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
$ javac -version
javac 1.7.0_67
我在发布之前进行了研究,有些人通过将 ant config.xml
更改为来解决
<property name="java.target" value="1.7" />
<property name="java.source" value="1.7" />
但它对我没有用。
我还尝试创建一个build-extra-gradle
文件来设置sourceCompatibility
和targetCompatibility
,但它似乎只是解决了主项目,而不是我在插件上使用的子项目。
【问题讨论】:
那么您使用的外部库使用菱形运算符?以及您在其中使用它的项目,您究竟是如何构建它的?蚂蚁还是 gradle? 是的,外部库使用菱形运算符。我在 plugin.xml 文件中使用<framework src="src/android/filepicker-android/filepicker-library" custom="true" type="projectReference"/>
导入我的库。我不确定如何用 gradle 来做,也不知道这是否是正确的方法。不过,这个库在 gradle 上。你能告诉我把 compile 'io.filepicker:filepicker-android:3.8.13’
放在哪里,以便我可以通过 gradle 导入它吗?
您使用的是 Android Studio 吗?如果是这样,请在您的项目上打开模块设置,然后转到 SDK Location 并查看 JDK Location 下的内容。确保它指向正确的 JDK 文件夹 (jdk.1.7.XXX)。
其实我使用的是cordova的命令行界面(CLI)。
同时给出 javac -version 的输出
【参考方案1】:
好的,对我有用的是添加插件使用的所有子项目(库)作为你的科尔多瓦项目的主库。
这是我所做的: 将所有库复制到库中,转到 eclipse>build path>order and export>Mark everything。 之后,你必须在你的 root/platforms/android 文件夹中创建一个 build-extras.gradle 文件。将此代码放在您的文件中:
ext.postBuildExtras =
android
compileOptions
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
allprojects
compileOptions
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
不过,在子项目中保持引用。您必须从项目和子项目中进行引用(不知道为什么,但有效。)。
【讨论】:
以上是关于如何更改cordova子项目使用的java版本的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle 构建 Cordova 项目时覆盖 Java 版本