2012-05-30 41 views
2

症状:我正在使用从创建者的git存储库中提取的项目。我包含他们的库,如libs文件夹中所示。该项目没有错误,项目编译。然而,当它访问应该在jar中的对象时,它会崩溃。NoClassDefFoundError,这里忽略了什么? (附图)

我已经做了一些其他的建议,我在这里读过。我已阅读了有关更改classpath的信息,那是哪里?

另外,罐子SRC代码显示在问题作为实际存在的物体....

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

05-30 11:26:16.878: E/AndroidRuntime(11098): FATAL EXCEPTION: main 
05-30 11:26:16.878: E/AndroidRuntime(11098): java.lang.NoClassDefFoundError:  twitter4j.conf.ConfigurationBuilder 
05-30 11:26:16.878: E/AndroidRuntime(11098): at com.pigmal.android.ex.twitter4j.TwitterApp.askOAuth(TwitterApp.java:110) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at com.pigmal.android.ex.twitter4j.TwitterApp.onClick(TwitterApp.java:144) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at android.view.View.performClick(View.java:2482) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at android.view.View$PerformClick.run(View.java:9077) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at android.os.Handler.handleCallback(Handler.java:587) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at a ndroid.os.Handler.dispatchMessage(Handler.java:92) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at android.os.Looper.loop(Looper.java:130) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at android.app.ActivityThread.main(ActivityThread.java:3683) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at java.lang.reflect.Method.invokeNative(Native Method) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at java.lang.reflect.Method.invoke(Method.java:507) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-30 11:26:16.878: E/AndroidRuntime(11098): at dalvik.system.NativeStart.main(Native Method) 

这是我的完整的项目设置。事实上,这是采用Android很可能不是与此有关,我不想通过标记疏远的Java专家就Android的

http://i46.tinypic.com/2s0lj5y.png

+0

1)说的 “Android” 不会疏远的 “Java专家”)2)IDE的“Java构建路径“*是编译时和运行时的”CLASSPATH“。问:什么是“有问题的对象”?问:你能否发布*确切的错误*? – paulsm4

+0

@ paulsm4我通常不会用Java标记android帖子,所以一些java专家可能不会看到与android相关的问题。我更新了确切的错误 – CQM

+0

你如何运行应用程序(命令行,日食等..)?任何参数传入? – cklab

回答

4

这解决了这个问题对我来说http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

What I did to fix the bug was : 

Remove the libraries from the standard Java build path : 
Right click on the project name > Properties > Java Build Path > tab Libraries > remove  everything except the “Android X.X” (2.3.3 in my case) and the “Android Dependencies” 
Rename the libraries folder from “lib” to “libs” 
By doing that, all the libraries in the folder “libs” are found by the Android plugin and are added to the “Android Dependencies” item of the project 
Restart Eclipse 
Android Dependencies should be created. Running the app won't produce NoClassDefFoundError anymore 

唯一的例外是,我有以下这些说明后重新启动Eclipse,而不仅仅是事后清理项目。

0

我想你最好的android标签也为这个问题。即使由于ADT版本的原因,我也曾在以前的帖子中看到过类似的问题。理想情况下,由于您已将代码放入libs文件夹中,因此您应该能够获得所有这些类。但是这似乎是一些运行时问题,而不是编译时间。

此外,这似乎是特定于android。


您是否在类路径中手动添加了jar? 通常,当在libs文件夹中添加一个罐子时,它将开始出现在Android Dependencies之内,而不是直接显示在快照中。

2

试试这个,这对我有用。

  1. 转到构建路径,删除twitter4j库,并确定。

  2. 转到构建路径,选择添加外部库,然后转到您从github下载的项目文件夹,然后转到它的lib文件夹,您将在那里找到twitter4j文件,选择twitter4j-core只有(并且只有在它仍然失败的情况下才包括twitter4j-stream,直到那时只保留核心)并且确定。

+0

很好的建议! CQM - Eclipse“构建路径”== Java“classpath”。不幸的是,有两种不同的构建路径/类路径:1)编译时,2)运行时。你的问题是运行时类路径没有选择具有类“twitter4j.conf.ConfigurationBuilder”的.jar。您必须将.jars添加为“外部库”。 – paulsm4

+0

这似乎让我回到原点。它没有编译错误,但是在运行应用程序时,它在访问方法时会用'NoClassDefFoundError'崩溃。你使用那个twitter4j-core是你唯一需要的项目? – CQM

1

我有同样的问题,从构建路径中删除所有的Twitter库,并重新命名lib文件夹到库解决了这个问题对我来说

0

对我来说,重命名文件夹,并重新启动没有解决的问题。但是,在a pages with links posted in a previous comment里面,有一个人解答了我的问题。 这种反应说:

If you have references to jars that are not in the ‘libs’ folder, for example if you use ‘classpath variable’, you can resolve the NoClassDefFoundError issue with the new ADT 17 by exporting the references. To export the references: simply go to “Properties > Java Build Path > Order and Export”, and check all the references you want exported.

,我必须src文件夹之前移动Twitter的罐子