标签: classpath

ActiveMQ 客户端问题:ClassNotFoundException org.apache.logging.log4j.spi.AbstractLoggerAdapter

我有一个小型 ActiveMQ 客户端,它应该只是连接到 AMQ 服务、创建队列并发送消息。我收到以下错误消息:

\n\n
Failed to instantiate SLF4J LoggerFactory\nReported exception:\njava.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/AbstractLoggerAdapter\n  at java.lang.ClassLoader.defineClassl(Native Method)\n  ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的上有以下罐子classpath

\n\n
log4j-1.2-api-2.6.2.jar\nlog4j-core-2.6.2.jar\nlog4j-slf4j-impl-2.6.2.jar\n\nactivemq-broker-5.13.3.jar\nactivemq-client-5.13.3.jar\nactivemq-console-5.13.3.jar\nactivemq-jaas-5.13.3.jar\nactivemq-kahadb-store-5.13.3.jar\nactivemq-openwire-legacy-5.13.3.jar\nactivemq-protobuf-1.1.jar\nactivemq-spring-5.13.3.jar\nactivemq-web-5.13.3.jar\ngeronimo-j2ee-management_1.1_spec-1.0.1.jar\ngeronimo-jms_1.1_spec-1.1.1.jar\ngeronimo-jta_1.0.1B_spec-1.0.1.jar\nhawtbuf-1.11.jar\njcl-over-slf4j-1.7.13.jar\nslf4j-api-1.7.13.jar\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我去掉前三个库,我会收到错误Failed to load class \xe2\x80\x9corg.slf4j.impl.StaticLoggerBinder\xe2\x80\x9d

\n\n

我尝试过搜索,但我不能说我找到了迄今为​​止有效的任何东西。

\n

java classpath slf4j log4j2

4
推荐指数
1
解决办法
1万
查看次数

Hive 错误:线程“main”java.lang.NoClassDefFoundError 中出现异常:scala/collection/Iterable

当 hive 使用 Spark 时,当我尝试查询 hive 中的表时,我遇到错误。例如,当我这样做时:

select count(*) from ma_table;
Run Code Online (Sandbox Code Playgroud)

我明白了:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Iterable
    at org.apache.hadoop.hive.ql.parse.spark.GenSparkProcContext.<init>(GenSparkProcContext.java:163)
    at org.apache.hadoop.hive.ql.parse.spark.SparkCompiler.generateTaskTree(SparkCompiler.java:195)
    at org.apache.hadoop.hive.ql.parse.TaskCompiler.compile(TaskCompiler.java:267)
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10947)
    at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:246)
    at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:250)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:477)
    at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1242)
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1384)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1171)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1161)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:234)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
Caused by: java.lang.ClassNotFoundException: scala.collection.Iterable
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 23 more …
Run Code Online (Sandbox Code Playgroud)

hive scala classpath apache-spark

4
推荐指数
1
解决办法
6091
查看次数

如何将 JAR 文件添加到 IBM WebSphere 服务器中的项目类路径?

我可以访问部署在 WebSphere 中的项目。我只创建.class文件并将它们放在WEB-INF下。

现在,我的一个 Java 类需要一个 JAR。我无权添加 JAR 并重新部署。只需要将同机C盘的JAR添加到项目的类路径中即可;这样它就可以在加载时加载 JAR。

我怎样才能做到这一点?

java websphere classpath

4
推荐指数
1
解决办法
5134
查看次数

如何从 JAR 中的类路径读取文件?

我使用以下代码从类路径读取文件:

Files.readAllBytes(new ClassPathResource("project.txt").getFile().toPath())
Run Code Online (Sandbox Code Playgroud)

project.txt当我处于战争状态时,这工作得很好src/main/resources。现在我重构了代码并将某些代码移至 JAR 中。这个新 JAR 现在包含src/main/resources/project.txt上面的代码。现在我在读取文件时遇到以下异常:

java.io.FileNotFoundException: class path resource [project.txt]
cannot be resolved to absolute file path because it does
not reside in the file system:
jar:file:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/viewer-1.0.0-SNAPSHOT.jar!/project.txt
Run Code Online (Sandbox Code Playgroud)

我仍在 Tomcat 容器中执行 WAR。

我怎样才能解决这个问题?

java spring classpath

4
推荐指数
1
解决办法
9625
查看次数

修补 java.base 会导致 java.lang.LinkageError

-Xbootclasspath/p:path我正在尝试在 Java 11 中做同样的事情,这些事情可以在 java 9 之前的版本中完成。

作为一个简单的示例,我修改了其中一种valueOf方法java.lang.Integer并使用以下方法编译了该项目:

javac --module-source-path=src/java.base --patch-module java.base=src/java.base -d mods $(find src -name '*.java')

然后我使用以下命令运行了一个简单的示例:

java --patch-module java.base=<pathToMyModifiedJavaBaseClasses> -p lib -m my.moduleA/my.moduleA.Main

这很有效,我看到显示的修改(我从 中所做的简单打印valueOf)。

然而,当我尝试做同样的事情时,java.lang.ClassLoader执行程序时出现以下错误(编译有效):

Error occurred during initialization of boot layer java.lang.LinkageError: loader 'bootstrap' attempted duplicate class definition for java.lang.invoke.SimpleMethodHandle.

我什至不需要进行更改java.lang.ClassLoader。我的补丁文件夹中该类的绝对存在似乎引发了此错误。(我只想在类的底部添加一个字段)

ClassLoader注意:我只是认为当使用 Eclipse 编译该类时它可以工作。我知道的少数差异之一是 Eclipse 编译器似乎尚未遵循JEP 280invokedynamic但是字节码中也有指令javac,所以我怀疑这就是问题所在。

java classpath java-platform-module-system java-module java-11

4
推荐指数
1
解决办法
619
查看次数

Tomcat的CLASSPATH与Java不同,它不包含".".我该如何改变它?

我花了好几个小时试图弄清楚为什么我得到了这个java.lang.NoClassDefFoundError,并且我把原因缩小到了Tomcat的类路径.

我使用下面的代码来查看路径变量的含义:

out.println("Classpath: '" + System.getProperty( "java.class.path" ) + "'" );
out.println("Ext dirs: '" + System.getProperty( "java.ext.dirs" ) + "'" );
out.println("Library path: '" + System.getProperty( "java.library.path" ) + "'" );
out.println("Path separator: '" + System.getProperty( "path.separator" ) + "'" );
Run Code Online (Sandbox Code Playgroud)

输出是:

Classpath: ':/usr/local/tomcat/bin/bootstrap.jar'
Ext dirs: '/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/ext:/usr/java/packages/lib/ext'
Library path: '/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/server:/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386:/usr/lib/jvm/java-6-sun-1.6.0.16/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib'
Path separator: ':'

如您所见,Classpath不以"."开头.因为它应该,我相信这就是为什么我的程序找不到我从webapp中的子目录导入的类.

为了查看类路径的设置位置,我做了grep -R bootstrap.jar /usr/local/tomcat/,并且反过来:( CLASSPATH="$CLASSPATH":"$CATALINA_HOME"/bin/bootstrap.jar在文件中/usr/local/tomcat/bin/catalina.sh)

这让我相信由于某些原因,$ CLASSPATH在这里是空的.但是,echo $CLASSPATH成功返回.:/usr/lib/jvm/java-6-sun/bin:/usr/local/tomcat/lib/servlet-api.jar

任何人都可以帮助解决这个问题吗?


编辑:我所有的servlet文件都在WEB-INF/classes/controllers/,我试图加载的库是子目录中的类文件.例如,如果ClassName.class在WEB-INF/classes/controllers/packagename /目录中,我添加package …

java tomcat classpath noclassdeffounderror

3
推荐指数
2
解决办法
2万
查看次数

Maven jetty插件和资源目录

在运行maven jetty插件时,我是否应该期望main/resources中的文件位于类路径中?这些应用程序可用于我在码头内运行吗?我是否可以将它们作为类路径资源而不是通过文件系统加载?

使用Eclipse Maven插件在Eclipse中运行junit测试也是同样的问题.

如果此目录不在类路径上,我可以添加它吗?

java maven-2 jetty classpath

3
推荐指数
1
解决办法
2238
查看次数

如何将多个jar添加到classpath?

我有超过25个jar文件如何在类路径中添加所有这些文件?

java classpath

3
推荐指数
2
解决办法
5127
查看次数

在交付单个jar并使用反射时,如何避免在命令行上指定完全限定的类名?

我有一个代码库,我想生成几个可交付的jar文件,每个文件都要从命令行运行,并访问代码库的某些功能.运行时,一些命令行参数是jar中的其他类,然后由反射创建.它工作得很好,但我必须指定类的非常长的完全限定路径,即使这些类在jar文件中.

我使用ant编译然后jar一系列目录.从最小的示例build.xml文件:

<property name="build" location="build"/>
<property name="jars" location="${build}/jars"/>
<property name="classes" location="${build}/classes"/>
<property name="src" location="src/dom/place/proj"/>

<target name="utility">
 <javac 
    includeantruntime="false" 
    srcdir="${src}/utility" destdir="${classes}" 
    classpathref="classpath" />
 <jar 
    destfile="${jars}/utility.jar" 
    basedir="${classes}" 
    includes="**/utility/**" />
</target>

<target name="tokenizers" depends="utility">
 <javac 
    includeantruntime="false" 
    srcdir="${src}/tokenizers" 
    destdir="${classes}" 
    classpathref="classpath" />
 <jar 
    destfile="${jars}/tokenizers.jar" 
    basedir="${classes}" 
    includes="**/tokenizers/**" />
</target>
Run Code Online (Sandbox Code Playgroud)

后来,我正在创建一个包含所有必需类的jar文件,并将运行一个命令,例如:

<target name="tokenize-file-jar">
 <jar destfile="${dist}/TokenizeFile.jar">
  <zipgroupfileset dir="${jars}">
    <include name="utility.jar"/>
    <include name="tokenizers.jar"/>
  </zipgroupfileset>
  <manifest>
    <attribute name="Main-Class" value="dom.place.proj.tokenizers.TokenizeFile"/>
  </manifest>     
 </jar>    
</target>
Run Code Online (Sandbox Code Playgroud)

这一切都有效,并查看jar文件,所有类都在那里.

prompt > unzip -l TokenizeFile.jar 
Archive:  TokenizeFile.jar
Length     Date   Time    Name
--------    ----   ----    ----
        0  01-11-12 …
Run Code Online (Sandbox Code Playgroud)

java ant reflection classpath

3
推荐指数
1
解决办法
931
查看次数

使用osgi访问bundle内的公共属性文件

我有一个带有多个包的osgi应用程序(在felix中).一个包中有一些常见的属性文件,其余的包只需要使用它们.

我们使用maven和spring osgi,属性文件在resouces中:

<path to bundle>/src/main/resources/
    common.properties
    engine.properties
    ...
Run Code Online (Sandbox Code Playgroud)

Maven通常在bundle jar中构建它们,因此它们应该在应用程序类路径中,但Spring无法访问它们,这会失败:

<context:property-placeholder location="classpath:common.properties" />
Run Code Online (Sandbox Code Playgroud)

(试过classpath*:和其他组合)

我读过这个这个

它是否真的是osgi意识形态的全球问题,没有标准的方法让它运作?只有黑客和解决方法就像<osgix:cmProperties...>

它关注的是因为它使部署更加困难且容易出错:您无法mvn deploy像在普通应用程序中那样在jars中部署属性文件, - 您必须手动将它们复制到每个版本的生产框中.

java spring osgi classpath properties-file

3
推荐指数
1
解决办法
4693
查看次数