【问题标题】:How to solve "The hierarchy of the type is inconsistent" error in Java Eclipse?如何解决 Java Eclipse 中的“类型的层次结构不一致”错误?
【发布时间】:2011-12-28 16:21:56
【问题描述】:

我试图在 Java Eclipse 中使用 Processing for Android 创建一个 Android 应用程序,但是当我要编译它时,我收到了这个错误消息“MainAcitvity 类型的层次结构不一致强>”。这是我的代码:

public class MainActivity extends PApplet {

 public static void main(String args[]) 

 {

     PApplet.main(new String[] { "--present", "com.RDP.MainActivity" });

 }

 Vector path = new Vector();

 public void setup(){

     size(550,550, P3D);
     smooth();

 }

 public void draw(){
     background(255);

     LineSimplifier1 pt;
     noFill();
     strokeWeight(1);
     beginShape();

     for (int i=0; i < path.size(); i++)

     {
         pt = (LineSimplifier1)path.elementAt(i);vertex(pt.x,pt.y);

     }

     endShape();

     strokeWeight(5);

     beginShape(POINTS);

     for (int i=0; i < path.size(); i++)

     {
         pt = (LineSimplifier1)path.elementAt(i);vertex(pt.x,pt.y);      

     }

     endShape();

 }

 public void mousePressed(){

     path = new Vector();

 }

 public void mouseDragged(){

     path.add(new LineSimplifier1(mouseX, mouseY));

 }

 public void mousePressed1(){

     if (path.size() > 1)

     {
         LineSimplifier1 [] tmp = new LineSimplifier1[path.size()-1];

         for (int i =0; i < path.size()-1; i++)

         {
             tmp[i] = (LineSimplifier1)path.elementAt(i+1);

         }

         path = new Vector();
         path.addAll(Arrays.asList(AndroidRDPActivity.simplifyLine2D(5,tmp)));

     }   
 }
}

另一个错误是,“无法解析类型 java.awt.event.MouseListener。它是从所需的 .class 文件中间接引用的”。请帮我解决这个问题。谢谢。

【问题讨论】:

  • 我认为你不需要扩展 PAApplet。
  • 它还会运行吗?因为后面的代码是PROCESSING的保留字?
  • 我认为你的 MainActivity 应该扩展 Activty 而不是 Applet,扩展 PAApplet 有什么具体原因吗?
  • 因为我正在尝试使用 PROCESSING 软件运行程序,所以我必须将其扩展到 PApplet

标签: android processing


【解决方案1】:

在我的情况下,这是由库冲突引起的。在控制台错误打印如下:

[2013-04-10 21:06:38 - miaoqu-lib] Found 3 versions of android-support-v4.jar in the dependency list,
[2013-04-10 21:06:38 - miaoqu-lib] but not all the versions are identical (check is based on SHA-1 only at this time).
[2013-04-10 21:06:38 - miaoqu-lib] All versions of the libraries must be the same at this time.
[2013-04-10 21:06:38 - miaoqu-lib] Versions found are:
[2013-04-10 21:06:38 - miaoqu-lib] Path: /home/sunshine/workspace/miaoqu-lib/libs/android-support-v4.jar
[2013-04-10 21:06:38 - miaoqu-lib]  Length: 385685
[2013-04-10 21:06:38 - miaoqu-lib]  SHA-1: 48c94ae70fa65718b382098237806a5909bb096e
[2013-04-10 21:06:38 - miaoqu-lib] Path: /home/sunshine/workspace/miaoqu-lib-actionbarsherlock/libs/android-support-v4.jar
[2013-04-10 21:06:38 - miaoqu-lib]  Length: 393154
[2013-04-10 21:06:38 - miaoqu-lib]  SHA-1: 307c1cc532eabbf1d135b43e5c983c9da700449d
[2013-04-10 21:06:38 - miaoqu-lib] Path: /home/sunshine/workspace/miaoqu-lib-slidingmenu/libs/android-support-v4.jar
[2013-04-10 21:06:38 - miaoqu-lib]  Length: 393154
[2013-04-10 21:06:38 - miaoqu-lib]  SHA-1: 307c1cc532eabbf1d135b43e5c983c9da700449d
[2013-04-10 21:06:38 - miaoqu-lib] Jar mismatch! Fix your dependencies

所以我将3个项目的lib文件夹中的android-support-v4.jar文件替换为同一个,问题就解决了。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我遇到了这个问题并通过以下方式解决了它:

    1- 执行处理中所写的操作 - Android Wiki 页面

    “制作Android应用程序的最佳方法是使用Subclipse在Eclipse中将processing/android/core的源代码检查为自己的项目。调用该项目android-core。然后使用Eclipse创建一个新的Android项目ADT,并将 android-core 作为“必需项目”包含在内。”

    编辑:正确的 SVN 路径是http://processing.googlecode.com/svn/trunk/processing/core

    注意:这样做不需要将处理的 android core.jar 导入到您的项目中

    2-安装JDK 7u7并将其添加到eclipse中,然后在MyAndroidProject - Properties - Build Path - add library中添加jdk7u7库

    错误消失了,但不幸的是应用程序在模拟器中崩溃了仍然试图找出原因

    【讨论】:

      【解决方案3】:

      您的项目还应该引用 android-support-v4.jar(包含在 ABS 的 libs 文件夹中。)因此,Properties->Java Build Path->Add JARs... 并从 ActionBarSherlock->libs 中选择该 jar

      【讨论】:

        【解决方案4】:

        错误表明您缺少一些从您正在使用的库中引用的库。检查处理框架和其他的要求和“如何开始”(如果有)。

        在您的情况下,Processing 似乎需要 java.awt,它是 Java SE 的核心部分,但在 Android SDK 中不存在。

        【讨论】:

        • 感谢您的建议。但是我将如何解决第二个问题,“无法解析类型 java.awt.event.MouseListener。它是从所需的 .class 文件中间接引用的”?我尝试添加 PROCESSING 的 CORE.JAR 但错误仍然存​​在。
        • 我以前从未听说过Processing,所以我帮不了你,对不起。确保您正确遵循了他们的指示,在他们的论坛或 smthn 上提问。
        【解决方案5】:

        在将 PDE Processing 项目导入 Eclipse 时遇到同样的问题。

        我通过此链接找到了解决方法http://ghostandthemachine.github.com/blog/2011/08/03/setup/

        如您所见,他没有导入 core.jar(来自 processing/lib),而是使用基础处理项目(通过 svn 下载)作为库。 然后编辑 Activity 类以扩展 Papplet 而不是 Activity 等... 然后我所做的是将处理导出的项目(未运行的项目)中的 java 代码以及资产文件夹中的 gif 等复制到我的新项目中,并且一切都运行良好(在模拟器中)。

        注意 - 在下载的项目中配置构建路径,以便 ANDROID_LIB 指向您的 ...platforms/android-2.1/android.jar

        明天我将尝试找出错误的原因(我怀疑导出项目的 core.jar 或 ant.properties/build.xml),但此刻我失去了足够的睡眠试图弄清楚这一点.

        希望能帮到你

        【讨论】:

          猜你喜欢
          • 2012-01-21
          • 2012-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-06
          • 2021-04-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多