Gradle无法正确加载org.apache.logging.log4j依赖项



我遇到了一个问题,gradle无法使org.apache.logging.log4j依赖于应用程序。

下面是我的grade.build文件,

plugins {
id 'java'
id 'war'
}
group 'com.hf'
version '1.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
}
compileJava {
options.compilerArgs += ["-proc:none"]
}
dependencies {
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-jcl', version: '2.11.0'
providedCompile 'org.hibernate:hibernate-core:5.3.7.Final'
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
testCompile group: 'junit', name: 'junit', version: '4.12'
}

这看起来很简单。我有-proc:none,因为在其他方面似乎有一些贬低的问题。不管gradle文件中是否存在proc:none,问题都会持续存在。gradle.build的输出如下。。。

> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :war UP-TO-DATE
> Task :assemble UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
BUILD SUCCESSFUL in 6s
3 actionable tasks: 3 up-to-date

依赖文件也存在于高速缓存目录中,C: \Users\MY_USER_NAME.gradle\caches\modules\files-2.1\org.apache.logging.log4j

包含以下目录:log4j log4j api log4j bom log4j core log4j jcl log4j到slf4j

所有这些都有各自的log4j jar嵌套在其中。

问题是eclipse无法识别log4j导入,

在此处输入图像描述

因此,我无法编译我的简单类

package com.hf.config;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
* The Config class reduces the amount of magic strings in the application via the
* getProperty method. It has a static string CONFIG_FILE indicating the path to the config file
* which must be set manually
* @version 1.0
*/
public class AppConfig
{
static Logger log = LogManager.getLogger(AppConfig.class.getName());
private static final String CONFIG_FILE = "./app_config.txt";
/**
* Gets a property from the CONFIG_FILE corresponding to propertyName
* @param propertyName
* @return a string value corresponding to propertyName
*/
public static String getProperty(String propertyName)
{
Properties prop = new Properties();
try(InputStream inStream = AppConfig.class.getClassLoader().getResourceAsStream(CONFIG_FILE))
{
if(inStream == null)
{
log.error("config error: did not find file '" + CONFIG_FILE + "', failed to load property " + propertyName);
return null;
}
prop.load(inStream);
return prop.getProperty(propertyName);
} catch(IOException e)
{   e.printStackTrace();            
}
log.error("config error: received property request '" + propertyName + "' which does not have a corresponding value in " + CONFIG_FILE);
return propertyName;
}
}

我对gradle很陌生,这是我们在工作中使用的东西,所以我正试图将其作为我个人项目的依赖管理器,以更熟悉它。遗憾的是,我花了两天时间试图找到这个问题的解决方案,希望有更了解或更有经验的人能帮助我解决这个问题。谢谢你的帮助。

p>我通过从eclipse中删除项目并重新导入它来解决我的问题。这似乎刷新了所有错误的设置,一切都很好。

在我沮丧的时候,我最初做的是安装IntelliJ IDE。当我将我的项目导入IntelliJ时,一切正常>___<。

这让我想到了从eclipse中删除该项目并重新导入它,这也解决了IDE中的问题。我只能猜测gradle或eclipse在某种程度上没有更新项目的状态。

虽然我很高兴能搬过去,但我也很恼火。希望这将对那些在未来遇到类似问题的人有所帮助。

最新更新