gpt4 book ai didi

java - Java 代码看不到使用 Gradle fileTree 包含的 JAR 文件库

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:36 24 4
gpt4 key购买 nike

我在 IntelliJ IDEA 中使用其 Gradle 项目模板创建了一个新的 Java 项目,我正在尝试设置一个库以便我的项目可以使用它。我将库JAR文件保存到项目中的./libs/frink-2014-02-17.jar。在我的 build.gradledependencies 部分,我写了 runtime fileTree(dir: 'libs', include: '*.jar') .但是我的 Java 代码看不到那个库。当我尝试构建项目时,编译器提示 import frink.parser.Frink; 引用了一个不存在的包。

如何修复我的构建错误,以便我可以在我的 Java 项目中使用 Frink 库?

详情

图书馆是Frink .弗林克是 not in the Maven repository ,所以我downloaded its JAR file ,将其重命名,使其在文件名中具有版本(在 the recommendation of the Gradle docs 之后),并将其放入项目根目录的 libs 文件夹中。然后我从 Gradle User Guide: File dependencies 复制了以下代码行尝试将所有 JAR 文件包含在我创建的 libs 目录中:

runtime fileTree(dir: 'libs', include: '*.jar')

但是当我“制作项目”或运行 ./gradlew build 时,我得到这些错误:

/…/frink-soulver/src/main/java/Main.java:1: package frink.parser does not exist
import frink.parser.Frink;
^
/…/frink-soulver/src/main/java/Main.java:5: cannot find symbol
symbol : class Frink
location: class Main
Frink interp = new Frink();
^
/…/frink-soulver/src/main/java/Main.java:5: cannot find symbol
symbol : class Frink
location: class Main
Frink interp = new Frink();
^
/…/frink-soulver/src/main/java/Main.java:11: package frink.errors does not exist
} catch (frink.errors.FrinkEvaluationException fee) {
^
4 errors
:compileJava FAILED

在编译之前,当我打开并查看 Main.java 时,我的 IDE 会突出显示相同的错误。

我在 Main.java 中的代码,包括 import,只是 the Frink sample code .和 Frink online JavaDocs表明该 JAR 文件中确实应该有一个 frink.parser 包。所以我并不是要一个不存在的包。

我曾尝试在 build.gradle 中将 runtime 更改为 compile,但这并没有什么不同。

当我在 IDEA 中打开“项目结构…”并转到“库”部分时,该列表中缺少 Frink JAR 文件。该列表包含“Gradle:guava-12.0”、“Gradle:hamcrest-core-1.3”、“Gradle:jsr305-2.0.3”和“Gradle:junit-4.11”。我不想只单击 + 按钮来使用 IDEA 添加库,因为我认为以两种不同的方式包含库会造成混淆。

我有 searched for “Gradle fileTree” ,但看起来我使用 fileTree 的方式与那些结果中的方式相同。

我是 Gradle、IDEA 和从头开始设置 Java 项目的新手。因此,如果我的任何项目设置看起来很奇怪或不标准,我愿意接受更正。例如,如果有比将 Frink 的 JAR 文件复制到我的项目中的文件夹更好的方法来包含 Frink,我可以这样做。

详细项目内容

我的完整build.gradle:

apply plugin: 'java'

sourceCompatibility = 1.6
version = '1.0'

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'

/* commenting this out for the question because the error still happens without this
// http://code.google.com/p/guava-libraries/wiki/UseGuavaInYourBuild
runtime group: 'com.google.guava', name: 'guava', version: '12.0'
// http://stackoverflow.com/questions/10007994/why-do-i-need-jsr305-to-use-guava-in-scala/10013226#10013226
// I'll include this dependency in case I decide I want to use these annotations
compile group: 'com.google.code.findbugs', name: 'jsr305', version: '2.0.3'
*/

runtime fileTree(dir: 'libs', include: '*.jar')
}

我的项目文件树,由 tree 生成:

.
├── build
│   ├── classes
│   │   └── main
│   └── dependency-cache
├── build.gradle
├── frink-soulver.iml
├── gradle
│   └── wrapper
│   ├── gradle-wrapper.jar
│   └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── libs
│   └── frink-2014-02-17.jar
├── out
│   ├── production
│   │   └── frink-soulver
│   └── test
│   └── frink-soulver
└── src
├── main
│   ├── java
│   │   └── Main.java
│   └── resources
└── test
├── java
└── resources

我的完整 Main.java:

import frink.parser.Frink;

public class Main {
public static void main(String[] args) {
Frink interp = new Frink();
interp.setRestrictiveSecurity(true);

try {
String results = interp.parseString("2+2");
System.out.println(results);
} catch (frink.errors.FrinkEvaluationException fee) {
// Do whatever you want with the exception
}
}
}

最佳答案

您已将其指定为运行时 的依赖项,但您在编译 时需要它...

关于java - Java 代码看不到使用 Gradle fileTree 包含的 JAR 文件库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21919276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com