gradle java ide_java – 如何在我的Gradle JAR类路径构建脚本中包含com.sun.tools JAR并同步我的IDE?...

我需要com.sun.tools jar作为编译依赖项,所以我只是将它复制到我的Intellij项目中的libs文件夹中.但是,我正在尝试使用gradle.我只需要它作为我的一个模块的依赖项.我该怎么做呢.我目前在我的模块jar任务中有这个:

jar {

from('build/classes/main/')

from('libs/tools.jar')

manifest {

attributes 'Manifest-Version': '1.0',

'Class-Path': configurations.runtime.files.collect {"../lib/${it.name}" },

}

我也在我的模块的“依赖关系”闭包中尝试了这个:

compile fileTree(dir: 'lib', include: '*.jar')

我也尝试将jar放在我的整个项目类路径上,它仍然没有编译:

classpath ":tools"

也许这是正确的,但我的IDE没有正确刷新?我已经有了插件

apply plugin: 'idea'

在我尝试这样做之前,它一直很完美.

编辑:这是一个注释处理器,所以我试图将它包含在我的模块jar构建中,而不是让其他模块依赖它.有没有比复制jar更好的方法呢?

解决方法:

有一种方法可以表达对tools.jar的依赖,而无需复制jar:

dependencies {

compile files("${System.getProperty('java.home')}/../lib/tools.jar")

}

Intellij 2017.1能够识别并将其作为模块依赖项导入而不会出现问题.

它只适用于在JDK上运行,因为裸JRE没有包含tools.jar.

标签:java,intellij-idea,gradle

来源: https://codeday.me/bug/20190627/1307858.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常出现在尝试导入Java 11或更高版本被标记为非公共API的com.sun.tools.javac.tree包的内容时,而Gradle项目默认使用的是较旧的Java API版本。在Java 9及以后,部分工具类和内部包被设计为仅对编译器自身可见,外部库不应直接依赖。 当你看到`package com.sun.tools.javac.tree不可见`这样的错误,可能的原因是: 1. 你尝试在不兼容的Java版本(如Java 17)使用了Java 11的内部API。 2. Gradle构建文件没有正确设置Java插件的版本,导致项目仍然使用了较低版本的工具类。 3. 你的项目直接引用了`JCTree`,而不是通过官方的javac库间接访问。 解决这个问题的方法有: 1. **更新Java插件版本**:在`build.gradle`确认`java`插件的版本是否为1.8或更低,如果使用了较高版本,将其更改为兼容的版本,例如: ```groovy plugins { id 'org.jetbrains.kotlin.jvm' version '1.5.31' id 'java' version '1.8' // 或者你需要的其他兼容版本 } ``` 2. **使用官方库**:如果你确实需要使用`JCTree`,尝试找到一个提供这些树结构类的官方或第三方库,而不是直接依赖`com.sun.tools`。 3. **避免直接使用私有API**:如果可能,尽量避免使用`com.sun.tools`这样的私有包,特别是当涉及到编译器内部的类和方法时。 相关问题: 1. 如何在Gradle指定Java插件的版本? 2. 是否存在提供`JCTree`的官方或推荐的库? 3. Java 17引入的私有API更改对Java开发者有什么影响?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值