我正在尝试使用新的Android Studio,但我似乎无法让它正常工作.
我正在使用Gson库来序列化/反序列化JSON对象.但是库不知何故不包含在构建中.
我创建了一个只有MainActivity的新项目.在/ libs文件夹中复制gson-2.2.3.jar并将其添加为库依赖项(右键单击 - >添加为库).这包括android studio中的jar,因此可以从源文件中引用它.
当我尝试运行该项目时,它无法编译,所以我添加:
compile files('libs/gson-2.2.3.jar')
Run Code Online (Sandbox Code Playgroud)
到de .gradle文件中的依赖项.之后它正确编译,但在运行应用程序时,我得到了一个ClassDefNotFoundException.
有谁知道我做错了什么?
android dependency-management gradle gson android-gradle-plugin
我有一个专有的jar,我想作为依赖添加到我的pom.
但我不想将它添加到存储库.原因是我希望我的常用maven命令等mvn compile开箱即用.(没有要求开发人员将其自己添加到某个存储库中).
我希望jar在源代码控制中位于第3方库中,并通过pom.xml文件的相对路径链接到它.
可以这样做吗?怎么样?
我必须承认,我总是忘记Nant命名模式的语法内部(例如文件集中使用的那些).在我看来,双星号/单星号的东西似乎是非常容易忘记的.
有人可以提供命名模式的权威指南吗?
所以我创建了一个Android-Library,并成功地将其编译成.aar文件,我称之为aar文件:"projectx-sdk-1.0.0.aar"现在我希望我的新项目依赖于这个aar所以我所做的就是关注这篇文章:http:// life. nimbco.us/referencing-local-aar-files-with-android-studios-new-gradle-based-build-system/
但由于我没有得到预期的结果,这篇文章让我感到困惑:
aar的包名是:com.projectx.photosdk并调用里面的模块sdk
这是我目前的项目结构:
|-SuperAwesomeApp
|--.idea
|--gradle
|--App
|---aars
|----projectx-sdk-1.0.0.aar
|---build
|---jars
|---src
|---build.gradle
Run Code Online (Sandbox Code Playgroud)
他是我的gradle构建文件:
apply plugin: 'android'
buildscript {
repositories {
mavenCentral()
flatDir {
dirs 'aars'
}
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
defaultConfig {
minSdkVersion 11
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:gridlayout-v7:19.0.1'
compile 'com.android.support:support-v4:19.0.1'
compile 'com.android.support:appcompat-v7:19.0.1'
compile 'com.projectx.photosdk:sdk:1.0.0@aar'
// compile files( …Run Code Online (Sandbox Code Playgroud) 我有一个名为的本地jar文件mylib.jar。我想将其用作Gradle Java项目中的依赖项。
这是我尝试的:
我libs/在项目根目录下创建了一个文件夹。我将jar文件放在libs/文件夹下。
MyProject
->libs/mylib.jar
->build.gradle
->src/...
Run Code Online (Sandbox Code Playgroud)
在我的build.gradle中:
apply plugin: 'java-library'
group 'com.my.app'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
api files('libs/mylib.jar')
}
Run Code Online (Sandbox Code Playgroud)
但是我无法访问mylib.jar项目代码中定义的公共类。为什么?
=====更多信息=====
我的罐子里的东西:
mylib.jar
> com.my.jar.package
>ClassFromJar.class
Run Code Online (Sandbox Code Playgroud)
这是我使用广口瓶的方法:
// Compilation error: Cannot resolve symobl 'ClassFromJar'
import com.my.jar.package.ClassFromJar;
public class MyEntryPoint {
// Compilation error: Cannot resolve symbol 'ClassFromJar'
ClassFromJar instance = new …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚应该怎样满足这种依赖性:
<dependency>
<groupId>javax.jnlp</groupId>
<artifactId>jnlp-api</artifactId>
<version>8.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/javaws.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我需要 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}" },
}
Run Code Online (Sandbox Code Playgroud)
我也在我的模块的“依赖项”闭包中尝试了这个:
compile fileTree(dir: 'lib', include: '*.jar')
Run Code Online (Sandbox Code Playgroud)
我也只是尝试将 jar 放在我的整个项目类路径上,但它仍然没有编译:
classpath ":tools"
Run Code Online (Sandbox Code Playgroud)
也许它是正确的,但我的 IDE 没有正确刷新?我已经有插件了
apply plugin: 'idea'
Run Code Online (Sandbox Code Playgroud)
在我尝试这样做之前,它一直运行良好。
编辑:它用于注释处理器,所以我试图将它包含在我的模块 jar 构建中,并且没有其他模块依赖它。有没有比复制 jar 更好的方法呢?
如何为自定义插件修改 Gradle 插件{} 管理存储库? 在这篇文章中没有重复,因为它不包括使用flatDir.
如何使用在本地 JAR 中定义的 Gradle 插件,使用新plugin {}语义,而不是已弃用的apply()语义?
没有任何解决方案,在发布问题并进行了相当长的搜索之后,我提出了一个问题,想知道这种应该是常见和直接的用法是否在 Gradle 修订后的插件语义中不受设计或疏忽的支持。
不幸的是,我的报告已关闭,没有提供任何有用的信息。
我在一个新问题中要求澄清,但仍在等待。
我很沮丧,原以为社区至少会对讨论这个问题感兴趣。
如果您可以提供信息,请这样做。
在澄清配置插件源的新样式之后,我更新了我的settings.gradle文件以使用以下块打开。然而,我感到遗憾的是,仅凭这一变化我没有看到任何改善。(对于build.gradle文件中引用的插件 id 字段,我尝试了 JAR 元数据中发布的全局 ID 和 JAR 文件的基本名称。两者都同样失败。)
pluginManagement {
repositories {
gradlePluginPortal()
jcenter()
flatDir {
dirs 'lib`'
}
}
}
Run Code Online (Sandbox Code Playgroud)
该文档解释了如何使用自定义存储库,但似乎忽略了一个简单的平面目录的情况。
如果我向 JAR 文件和plugins {}块中的相应语句添加版本号,我会得到一些改进。在这种情况下,消息变为:
Plugin [id: 'plugin-id', version: '1.0.0'] was not found in any of the following …Run Code Online (Sandbox Code Playgroud) I have a Gradle build that has some dependencies of the form
compile files('path/to/local/lib.jar')
Run Code Online (Sandbox Code Playgroud)
(the build is being migrated - eventually these will be replaced)
The build failed because one of these paths was incorrectly specified. But it failed due to a compile error - it looked like Gradle silently ignored the missing dependency.
Is there a simple option or switch that will force Gradle to fail the build if any dependency (particularly local file dependencies) cannot be resolved (eg., …
我正在尝试在Mac OS上运行示例JavaFX应用程序.
的build.gradle
apply plugin: 'java'
apply plugin: 'application'
repositories {
mavenCentral()
}
dependencies {
compile "org.openjfx:javafx-base:11"
compile "org.openjfx:javafx-graphics:11"
compile "org.openjfx:javafx-controls:11"
}
compileJava {
doFirst {
println "CLASSPATH IS $classpath.asPath"
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.graphics'
]
classpath = files()
}
}
Run Code Online (Sandbox Code Playgroud)
Java类
package com.test;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Label l = new Label("Hello, JavaFX …Run Code Online (Sandbox Code Playgroud) 我经历了有关build.gradle的类似问题,并且浏览了Gradle Kotlin Primer,但看不到如何在build.gradle.kt文件中添加.jar文件。我正在尝试避免使用mavenLocal()