异常java.lang.NoClassDefFoundError android / app / Activity

时间:2014-03-09 15:25:43

标签: java android eclipse exception

在Android应用中,有:

public class Pars extends Activity{
    public Document docout(){

          InputStream is = getResources().openRawResource(R.raw.talechap01);
        Document docout = null;

         DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
          DocumentBuilder builder = null;
        try {
            builder = domFactory.newDocumentBuilder();
            docout = builder.parse(is);

        } catch (ParserConfigurationException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return docout;
    }

public class Manager {

    public static String getStory(String spage, Document docs) {

          XPathExpression expr;
          XPath xpath = XPathFactory.newInstance().newXPath();

           Object result = null;
           String num = spage;
           String par = null;

           try {

           expr = xpath.compile("//decision"+num+"/p//text()");

            result = expr.evaluate(docs, XPathConstants.NODESET);
          }

         catch (XPathExpressionException e) {

             e.printStackTrace();
          }

          NodeList nodes = (NodeList) result;

         for (int i = 0; i < nodes.getLength(); i++) {

           par = nodes.item(i).getNodeValue();

           System.out.println(par);
         }
         return par;
      }
}

现在我想测试代码。

public class Test {

    public static void main(String[] args) {

        try {Pars p = new Pars();
        Document doc = p.docout();
        System.out.println(Manager.getStory("000", doc));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

我将“Test”作为java应用程序运行,然后得到:

  

线程“main”中的异常java.lang.NoClassDefFoundError:   android / app / Activity at java.lang.ClassLoader.defineClass1(Native   方法)at java.lang.ClassLoader.defineClass(Unknown Source)at   java.security.SecureClassLoader.defineClass(未知来源)at   java.net.URLClassLoader.defineClass(未知来源)at   java.net.URLClassLoader.access $ 100(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   com.stack.over.Test.main(Test.java:11)​​引起:   java.lang.ClassNotFoundException:android.app.Activity at   java.net.URLClassLoader $ 1.run(未知来源)at   java.net.URLClassLoader $ 1.run(未知来源)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)... 13更多

我试图找到如何修复但无法实现它。 我从另一个问题得到了这个答案,但我还是那样的noob,并且无法弄清楚如何修复它。

  

您已将Pars类定义为扩展类Activity。该   你看到的错误告诉你那个班级   android.app.Activity在类路径上不可用。也许你需要   检查导入的库。 - adamretter 3月5日10:01

谢谢大家。

2 个答案:

答案 0 :(得分:3)

错误在于您尝试运行引用Android类(android.app.Activity)的程序作为常规Java程序,该程序在其类路径中没有Android运行时库。

您应该将Android应用程序作为Android应用程序(在模拟器或设备上)和常规Java程序作为常规Java程序运行,而不是将它们混合在一起。 Activity是Android; main()方法是常规Java。

要了解Android应用开发,您可以从developer.android.com getting started documentation开始。

答案 1 :(得分:1)

错误消息说明了一切。你现在在写Android。尝试编写main方法在Android中没有比编写在Tomcat中运行的webapp更有意义。您将需要退后一步,了解Android的工作原理。