javax.inject不存在

问题描述 投票:1回答:2

为了研究javax.inject的麻烦,我在IntelliJ IDEA中创建了简约的Gradle项目。

它仅包含Main.java

import javax.inject.Scope;
public class Main {
    public static void main(String[] args) {}
}

的build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
}
apply plugin: 'java'
dependencies {
    compileOnly 'javax.annotation:jsr250-api:1.0'
}

和settings.gradle

rootProject.name = 'test'

建立我得到的项目

错误:(1,20)java:包javax.inject不存在

javax有什么问题,为什么它不存在?

嗯,似乎问题并不是javax特有的。试图从mavenCentral添加不同的依赖项,没有人工作。像Gradle一样,根本不加载外部库。

解决了

问题出在repositories - 它必须在buildscript之外。

java intellij-idea gradle
2个回答
2
投票

仅编译依赖项与常规“编译”依赖项明显不同。它们不包含在运行时类路径中,并且是不可传递的,这意味着它们不包含在依赖项目中。使用Gradle项目依赖项以及发布到Maven或Ivy存储库时也是如此。在后一种情况下,仅从已发布的元数据中省略仅编译依赖项。

https://docs.gradle.org/current/userguide/artifact_dependencies_tutorial.html


2
投票

只需带上javax.inject依赖

compile group: 'javax.inject', name: 'javax.inject', version: '1'
© www.soinside.com 2019 - 2024. All rights reserved.