Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NoSuchMethodError:org.slf4j_Java_Python_Maven_Apache Storm - Fatal编程技术网

Java NoSuchMethodError:org.slf4j

Java NoSuchMethodError:org.slf4j,java,python,maven,apache-storm,Java,Python,Maven,Apache Storm,我将storm与python一起使用。我使用此命令在本地运行拓扑 mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass=my.Topology 我犯了这个错误 java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljav

我将storm与python一起使用。我使用此命令在本地运行拓扑

mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass=my.Topology
我犯了这个错误

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.apache.log4j.Category.differentiatedLog(Category.java:186)
at org.apache.log4j.Category.info(Category.java:229)
我使用这个命令
mvn dependency:tree
来查看
slf4j
这是我得到的
slf4j
部分

org.apache.storm:storm-core:jar:0.9.6:provided
[INFO]    +- org.clojure:clojure:jar:1.5.1:provided
[INFO]    +- clj-time:clj-time:jar:0.4.1:provided
[INFO]    +- joda-time:joda-time:jar:2.0:provided
[INFO]    +- compojure:compojure:jar:1.1.3:provided
[INFO]    +- org.clojure:core.incubator:jar:0.1.0:provided
[INFO]    +- org.clojure:tools.macro:jar:0.1.0:provided
[INFO]    +- clout:clout:jar:1.0.1:provided
[INFO]    +- ring:ring-core:jar:1.1.5:provided
[INFO]    +- commons-fileupload:commons-fileupload:jar:1.2.1:provided
[INFO]    +- javax.servlet:servlet-api:jar:2.5:provided
[INFO]    +- hiccup:hiccup:jar:0.3.6:provided
[INFO]    +- ring:ring-devel:jar:0.3.11:provided
[INFO]    +- clj-stacktrace:clj-stacktrace:jar:0.2.2:provided
[INFO]    +- ring:ring-jetty-adapter:jar:0.3.11:provided
[INFO]    +- ring:ring-servlet:jar:0.3.11:provided
[INFO]    +- org.mortbay.jetty:jetty:jar:6.1.26:provided
[INFO]    +- org.mortbay.jetty:jetty-util:jar:6.1.26:provided
[INFO]    +- org.clojure:tools.logging:jar:0.2.3:provided
[INFO]    +- org.clojure:math.numeric-tower:jar:0.0.1:provided
[INFO]    +- org.clojure:tools.cli:jar:0.2.4:provided
[INFO]    +- commons-io:commons-io:jar:2.4:provided
[INFO]    +- org.apache.commons:commons-exec:jar:1.1:provided
[INFO]    +- commons-lang:commons-lang:jar:2.5:provided
[INFO]    +- com.googlecode.json-simple:json-simple:jar:1.1:provided
[INFO]    +- com.twitter:carbonite:jar:1.4.0:provided
[INFO]    +- com.esotericsoftware.kryo:kryo:jar:2.21:provided
[INFO]    +- 
  com.esotericsoftware.reflectasm:reflectasm:jar:shaded:1.07:provided
[INFO]    +- org.ow2.asm:asm:jar:4.0:provided
[INFO]    +- com.esotericsoftware.minlog:minlog:jar:1.2:provided
[INFO]    +- org.objenesis:objenesis:jar:1.2:provided
[INFO]    +- com.twitter:chill-java:jar:0.3.5:provided
[INFO]    +- org.yaml:snakeyaml:jar:1.11:provided
[INFO]    +- commons-logging:commons-logging:jar:1.1.3:provided
[INFO]    +- commons-codec:commons-codec:jar:1.6:provided
[INFO]    +- com.googlecode.disruptor:disruptor:jar:2.10.4:provided
[INFO]    +- org.jgrapht:jgrapht-core:jar:0.9.0:provided
[INFO]    +- ch.qos.logback:logback-classic:jar:1.0.13:provided
[INFO]    +- ch.qos.logback:logback-core:jar:1.0.13:provided
[INFO]    +- org.slf4j:slf4j-api:jar:1.7.5:provided
[INFO]    +- org.slf4j:log4j-over-slf4j:jar:1.6.6:provided
[INFO]    \- jline:jline:jar:2.11:provided
我的POM

<project xmlns="http://maven.apache.org/POM/4.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Sim</groupId>
<artifactId>Project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Pro</name>
<url>http://maven.apache.org</url>
<dependencies>
  <dependency>
    <groupId>org.apache.storm</groupId>
    <artifactId>storm-core</artifactId>
    <version>0.9.6</version>
    <scope>provided</scope>
  </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory> ${basedir}/multilang</directory>
      </resource>
    </resources>
<plugins>
 <plugin>
  <artifactId>maven-assembly-plugin</artifactId>
   <configuration>
     <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>exec-maven-plugin</artifactId>
             <version>1.5.0</version>
             <executions>
                 <execution>
                     <goals>
                        <goal>exec</goal>
                     </goals>
                 </execution>
             </executions>
            <configuration>
                <executable>java</executable>
  <includeProjectDependencies>true</includeProjectDependencies>
  <includePluginDependencies>true</includePluginDependencies>
  <classpathScope>compile</classpathScope>                                  
  <mainClass>Sim.Topology</mainClass>
                          </configuration>
                    </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
                            <version>2.3</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>

4.0.0
模拟
项目
罐子
1.0-快照
赞成
http://maven.apache.org
org.apache.storm
风暴核心
0.9.6
假如
${basedir}/multilang
maven汇编插件
带有依赖项的jar
组装
包裹
单一的
org.codehaus.mojo
execmaven插件
1.5.0
执行官
JAVA
真的
真的
编撰
模拟拓扑
org.apache.maven.plugins
maven编译器插件
2.3
1.6
1.6

编辑的答案

我第一次怀疑这是一个提供或编译范围依赖性的问题,这是错误的,因为您是用
classpathScope=compile
启动程序的

找到slf4 api,否则错误消息将是
ClassNotFoundError

问题是log4j想要调用以下方法:

void log(Marker marker, String fqcn, int level, String message, Object[] argArray, Throwable t)
它是在版本1.7.5的slf4j api中定义的(根据Javadocs,它是从版本1.3开始的)

对此错误的唯一解释是,类路径上必须有另一个版本的slf4j-api.jar,该版本还没有此方法,并且在加载LocationAwareLogger接口时使用

请检查输出

mvn dependency:tree
对于slf4j api的其他实例,可能隐藏在树的某个地方

另一种查找类从何处加载的方法是使用以下代码():

更新:

因此,当使用
mvn exec
运行程序时,有一个加载了1.5.6版的slf4j api(欢迎使用maven依赖地狱)。您能否显示项目的完整
pom.xml
?它是否有父pom或其他引入的依赖项?如果通过添加以下内容显式添加对所需版本的slf4j api的依赖项,会发生什么情况:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.9</version>
</dependency>

org.slf4j
slf4j api
1.7.9
更新:

问题来自execmaven插件,它正在加载旧版本的slf4japi。从插件配置中删除以下行时:

<includePluginDependencies>true</includePluginDependencies>
true
然后加载实际的slf4j api。您也可以将该值设置为false,但这是默认值。我不认为你需要包含插件依赖项,当你构建项目包的时候,你也没有插件依赖项。此参数的文档说明:

指示在执行主类时是否应使用此插件的依赖项。当项目依赖关系不合适时,这非常有用。当项目不是java项目时,仅使用插件依赖项尤其有用。例如,使用csharp插件的mvn项目只希望将dotnet库视为依赖项


因此,我认为删除这一行或将值设置为false将解决您的问题。

谢谢您的回复,但我的pom中没有任何关于slf4j的内容。所以我没有给它下定义。如何检查呢?这是storm的过渡要求,您必须确保您的运行时环境在类路径上有这些库。如何定义对storm的依赖关系?请问,您的意思是我应该检查storm中的库文件夹吗?当我检查它并找到slf4j的两个文件时,我删除了它。但我在m2/repository/org中找到了这些文件。那之后我该怎么办?我把我的pom贴在问题帖上。感谢您的耐心,我还注意到.m2/repository中的slf4j api文件夹有三个版本:1.5.6、1.6.6和1.7.5。这可能是个问题吗?当您将pom中storm的作用域更改为编译时,它会运行吗?
<includePluginDependencies>true</includePluginDependencies>