首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Gradle fileTree包含的JAR文件库没有被Java代码看到

使用Gradle fileTree包含的JAR文件库没有被Java代码看到
EN

Stack Overflow用户
提问于 2014-02-20 20:50:17
回答 2查看 7.5K关注 0票数 3

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

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

详细信息

图书馆是弗林克。Frink是不在Maven存储库中,所以我将它重命名为下载其JAR文件,使其在文件名中具有版本(遵循级文档的推荐),并将其放在项目根目录下的libs文件夹中。然后,我从分级用户指南:文件依赖关系复制了以下代码行,试图将所有JAR文件包含在我创建的libs目录中:

代码语言:javascript
运行
复制
runtime fileTree(dir: 'libs', include: '*.jar')

但是,当我“生成项目”或运行./gradlew build时,我会得到以下错误:

代码语言:javascript
运行
复制
/…/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,就是Frink示例代码Frink在线JavaDocs表明JAR文件中确实应该有一个frink.parser包。这并不是说我要的是一个不存在的包裹。

我尝试过将runtime改为compile in build.gradle,但这并没有什么区别。

当我打开“项目结构…”时在IDEA并转到Libraries部分时,Frink JAR文件在列表中丢失了。该列表包含“Gradle:番石榴-12.0”、“Gradle:hamcrest-core-1.3”、“Gradle:jsr305 305-2.0.3”和“Gradle:junit-4.11”。我不想只点击+按钮来添加一个使用IDEA的库,因为我认为以两种不同的方式包含库会让人感到困惑。

我已经使用了搜索“Gradle fileTree”,但看起来我使用fileTree的方式与在这些结果中使用的方式相同。

我对从无到有地分级、构思和设置Java项目都很陌生。因此,如果我的任何项目设置看起来很奇怪或不标准,我是开放的更正。例如,如果有比将JAR文件复制到项目中的文件夹中更好的方法来包含Frink,我可以这样做。

详细项目内容

我的完整build.gradle

代码语言:javascript
运行
复制
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生成

代码语言:javascript
运行
复制
.
├── 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

代码语言:javascript
运行
复制
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
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-20 20:57:03

您已经将它指定为runtime的依赖项,但当您compile.

票数 2
EN

Stack Overflow用户

发布于 2016-04-11 20:07:18

尝试将依赖规则从runtime fileTree(dir: 'libs', include: '*.jar')更改为compile files('libs/MyLibrary.jar')。这对我有用。

我已经在Android bug跟踪器上创建了问题,请随时评论它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21919276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档