- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 IntelliJ IDEA 中使用其 Gradle 项目模板创建了一个新的 Java 项目,我正在尝试设置一个库以便我的项目可以使用它。我将库JAR文件保存到项目中的./libs/frink-2014-02-17.jar
。在我的 build.gradle
的 dependencies
部分,我写了 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/
我正在使用 fileTree 实用程序来获取文件列表,但需要排除除列表中选择的少数目录之外的所有目录。 我的目录结构: node_modules/ react-native/ reac
尝试从文件夹及其所有子目录中提取所有文件。针对外部 api 调用目录的内容。 export const extractFiles = (filesOrDirectories) => { const
在我的 gradle 任务中,我迭代 fileTree 并且一切正常: myTask { fileTree("${project.projectDir}/dir").visit { FileVis
我正在尝试使用 jQuery FileTree 访问本地共享文件夹。我的代码在下面,如果该文件夹尚未在网络上共享,它绝对可以正常工作。但是,一旦我共享文件夹,FileTree(或 Javascript
我正在使用jqueryfiletree plugin ,看起来已经建立并且相当顺利,但我有一些问题: 尽管选项设置如下: $(function() { $("#sourceFileTree")
这是工作 gradle build 脚本代码: dependencies { compile files("dir/libs", "dir/libs2") compile fileTr
我正在使用一个具有大量本地依赖项的Java项目。我的图书馆文件夹的格式如下: projectroot\lib\com\google\code\gson\gson\2.8.0\gson-2.8.0.ja
给定一个目录dir: dir ├── sub1 │ ├── file1 │ └── file2 ├── sub2 │ ├── file1 │ └── file2 └── sub3
出于某些奇怪的原因,我在 gradle 类路径中使用基于本地文件树的 jar。 从子模块(项目)中,我想排除其中一个本地 jar。但我缺少它的语法,有人可以为我提供正确的语法以排除本地 jar 文件作
我想说: clean.delete(fileTree("a") { include "subdir/" include "aFile" }) 删除目录“subdir”和文件“aFile”。
我想创建一个实现接口(interface) 的对象文件树 在 Gradle 中。 从我可以从文档中找到的 文件树适配器 类实现了 FileTree,但它是 内部 类(class)。 如何初始化我的对象
我想要的是一次将一个包或一组包提交到两个存储库,如果可能的话使用相同的版本号,这样一个存储库可以是另一个存储库的镜像。 可以使用 Gofer 吗? 最佳答案 Gofer 每次操作可以获取多个存储库。尝
我正在编写一个将 tarball 提取到目录中的任务。我不控制这个 tarball 的内容。 tarball 包含一个目录,其中包含我真正关心的所有文件。我想从该目录中提取所有内容并将其复制到我的目的
我有一个 Gradle 构建脚本,它变得太大了,所以我创建了一个实用程序类。在这个类中,我想使用 Gradle fileTree(或任何其他 Gradle 类),我该怎么做?要清楚,这是在 build
也许我错过了 Gradle 的工作方式。我这里有一个父项目,它只包含配置,即在构建它时不会构建任何工件,它只是管理和构建它的所有子项目。 现在子项目共享一些依赖配置,所以我想我会在根项目的 build
我正在将一个项目迁移到Gradle。 我有一些通过compile fileTree(dir: "libs/$it", include: '*.jar')导入的本地部门 但是,不建议使用compile。
我用的是IDEA。我的 gradle 配置是这样的: 重点是编译fileTree(dir: 'libs', include: ['*.jar'])。 这是我的项目结构: 然后我发现 compile f
我正在用 Java 构建一个 Gradle 插件,因为我想利用一些 Java 库。作为插件的一部分,我需要列出和处理文件的文件夹。我可以在 gradle 构建文件中找到许多如何执行此操作的示例:
我在 IntelliJ IDEA 中使用其 Gradle 项目模板创建了一个新的 Java 项目,我正在尝试设置一个库以便我的项目可以使用它。我将库JAR文件保存到项目中的./libs/frink-2
这不是编码错误。这只是关于 Android Studio 的使用。我试图通过谷歌搜索并找到合适的解决方案,但我找不到。 在 Android studio 项目中,lib 文件夹中有 XYZ.jar 文
我是一名优秀的程序员,十分优秀!