java - 得到 java.lang.NoClassDefFoundError : scala/Serializable with scala jars in classpath

标签 java scala classpath

我的类路径上的 scala-compiler-2.8.0.jar 和 scala-library-2.8.0.jar 如何出现此异常?

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Serializable
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at kafka.utils.ZKConfig.<init>(ZkUtils.scala:302)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:25)
at pt.sapo.labs.crawl.twitter.streaming.adapter.MessageBrokerStatusAdapter.<init>(MessageBrokerStatusAdapter.java:30)
at pt.sapo.labs.TwitterStreamClientApplication.createAdapters(TwitterStreamClientApplication.java:73)
at pt.sapo.labs.TwitterStreamClientApplication.start(TwitterStreamClientApplication.java:57)
at pt.sapo.labs.Main.main(Main.java:39)
Caused by: java.lang.ClassNotFoundException: scala.Serializable
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 17 more

这是我的 META-INF/MANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Build-Jdk: 1.6.0_24
Main-Class: pt.sapo.labs.Main
Class-Path: lib/twitter4j-async-3.0.4-SNAPSHOT.jar lib/twitter4j-core-
3.0.4-SNAPSHOT.jar lib/twitter4j-stream-3.0.4-SNAPSHOT.jar lib/log4j-
1.2.16.jar lib/jackson-mapper-asl-1.9.5.jar lib/jackson-core-asl-1.9.
5.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.0.4.jar li
b/commons-codec-1.2.jar lib/httpcore-4.1.4.jar lib/httpclient-4.1.3.j
ar lib/httpmime-4.1.3.jar lib/commons-io-2.3.jar lib/jcl-over-slf4j-1
.6.4.jar lib/slf4j-api-1.6.4.jar lib/wstx-asl-3.2.7.jar lib/stax-api-
1.0.1.jar lib/slf4j-jdk14-1.6.4.jar lib/log4j-over-slf4j-1.6.4.jar li
b/mongo-java-driver-2.7.3.jar lib/kafka_2.9.2-0.7.0.jar lib/zookeeper
-3.3.4.jar lib/zkclient-0.1.jar lib/scala-compiler-2.8.0.jar lib/scal
a-library-2.8.0.jar

我像往常一样运行我的 jar 。

java -jar reaction-twitter-streaming-client.jar

我想了解为什么它给我这个异常(exception)。

最佳答案

我猜,Class-Path 变量的定义存在一些问题。看这里: docs.oracle.com/javase/tutorial/deployment/jar/downman.htmldocs.oracle.com/javase/6/docs/technotes/guides/jar/jar.html

  1. 您的 META-INF/MANIFEST.MF 文件末尾是否有空行?
  2. 你的相对路径正确吗? (从你的 jar 所在的目录,你可以访问这些库吗?)

如果这些都不起作用。我会尝试使用一个库来尝试一些玩具示例,并尝试将其放在与 jar 文件所在的目录相同的目录中,然后放入某个子目录中,...以查看 Class-Path 如何工作。 ..

关于java - 得到 java.lang.NoClassDefFoundError : scala/Serializable with scala jars in classpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621250/

相关文章:

java - 如何将 logging.properties 添加到 Eclipse 项目的类路径?

java - 为什么 Spring 的 MessageDigestPasswordEncoder 将 `{}` 放入盐中? javadoc 中的示例似乎不起作用

java - 用于更新对象的 Spring REST API 方法不会检索现有的子对象

java - 滚动 JLayer 的行为与它应该替换的滚动 JPanel 不同

list - 如何从列表的元素创建所有可能的组合?

java - 为 jar 和类设置类路径

java - 为什么是 SomeClass<? super T> 不等同于 Java 泛型类型中的 SomeClass<T>?

scala - 如何在游戏框架表单中定义默认值可选字段?

function - 将类型信息放入 Scala 中的空参数方法调用

java - 从终端设置 Java 类路径时遇到问题