0

我在 Eclispe ADT for android 中使用一个简单的 android 代码来反转输入字符串。反转字符串函数是单独编写的,我已将其导出为 jar 文件。然后我将 jar 添加到我的 android 项目的 libs 文件夹中。在构建时eclipse项目没有显示amy错误,但是在运行时给用户输入字符串并单击字符串按钮后,模拟器显示消息“不幸的是'我的第一个项目'已停止”

这是我的主要 android 活动类

package com.example.myfirstproject;

import Reverse.ReverseSentence;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.Menu;
import android.widget.Toast;
import android.widget.EditText;
import android.widget.RadioButton;

public class MainActivity extends Activity {
private EditText text1,text2;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text1=(EditText)findViewById(R.id.editText1);
    text2=(EditText)findViewById(R.id.editText2);

}

public void onClick(View view) {
    switch (view.getId()) {
    case R.id.button1:
      RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
      RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
      if (text1.getText().length() == 0) {
        Toast.makeText(this, "Please enter a valid number",
            Toast.LENGTH_LONG).show();
        return;
      }

      float inputValue = Float.parseFloat(text1.getText().toString());
      if (celsiusButton.isChecked()) {
        text1.setText(String
            .valueOf(convertFahrenheitToCelsius(inputValue)));
        celsiusButton.setChecked(false);
        fahrenheitButton.setChecked(true);
      } else {
        text1.setText(String
            .valueOf(convertCelsiusToFahrenheit(inputValue)));
        fahrenheitButton.setChecked(false);
        celsiusButton.setChecked(true);
      }
      break;
    case R.id.button2:
        String inputString=text2.getText().toString();
        if(text2.getText().length()==0){
        Toast.makeText(this, "You have enetered blank ", Toast.LENGTH_LONG).show();
        return;
        }

        try{
        //Reverse.ReverseSentence rObj=new Reverse.ReverseSentence();
        ReverseSentence rObj=new ReverseSentence();

        String outputString=new String();
        outputString=rObj.reverseString(inputString);
        text2.setText(outputString);
        }
        catch(Exception e){
            e.printStackTrace();
        }
        break;
    }
  }
// Converts to celsius
  private float convertFahrenheitToCelsius(float fahrenheit) {
    return ((fahrenheit - 32) * 5 / 9);
  }

  // Converts to fahrenheit
  private float convertCelsiusToFahrenheit(float celsius) {
    return ((celsius * 9) / 5) + 32;
  }

  //Reverses a string

  /*public String reverseString(String input){
        String original,reverse="";
        //Scanner scanner=new Scanner(System.in);

        original=input;
        System.out.println("The input string is "+ original);

        int length=original.length();

        for(int i=length-1;i>=0;i--){
            reverse=reverse+original.charAt(i);

            }

        return reverse;     

    }*/

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

我正在使用的 jar 文件具有以下组件。
1 META-INF 文件夹,2 .classpath 文件,3 .properties 文件 4 包含两个类文件 Palindrome.class 和ReverseSentence.class的 Reeverse 文件夹

这两个类的源代码如下:-

回文类

package Reverse;

import java.util.*;

public class Palindrome {

public static void main(String args[]){
    System.out.println("Type a string to give input");
    Scanner scanner=new Scanner(System.in);
    String inputString=new String();
    String outputString=new String();
    inputString=scanner.nextLine();
    scanner.close();
    System.out.println("The input String is "+inputString);

    ReverseSentence r=new ReverseSentence();

    outputString=r.reverseString(inputString);

    System.out.println("The output String is "+outputString);
    if(inputString.equalsIgnoreCase(outputString)){
        System.out.println("The string is a palindrome");
    }
    else{
        System.out.println("The string is not a palindrome");
    }
        System.out.println("The program is working fine");

}

/**
 * @param args
 */


}

ReverseSentence 类:-

package Reverse;

public class ReverseSentence {

String original,reverse="";
public ReverseSentence(){

}
public ReverseSentence(String input){
    this.original=input;

}
public String reverseString(String input){

    //Scanner scanner=new Scanner(System.in);

    original=input;
    System.out.println("The input string is "+ original);

    int length=original.length();

    for(int i=length-1;i>=0;i--){
        reverse=reverse+original.charAt(i);

        }

    return reverse;     

}



}

我没有得到解决问题的解决方案。我已尝试将 Android 首选项 -> 编译器 -> JDK 合规性修复为 1.7,因为我的 java 代码是使用 JDK 1.7 构建的。但我仍然遇到应用程序崩溃。

我使用 Eclipse Juno EE 作为 java 开发 IDE,使用 Eclipse java ADT 作为 Android IDE。

这是一个简单的程序,用于检查 jar 文件在 android 中的可用性,但我收到 noClassDefFound 错误。可能我遗漏了一些东西,这是一个愚蠢的问题,但我仍然被困在这个问题上。

请帮忙....

4

2 回答 2

0

试试这个方法...

1.Right click on your project and go to Properties.
2.go to java build path..//which is on the 5th position on left side
3.go to Order and Export tab.
4.check(Tick Mark) on your selected jar file. and click ok.
5.Now, clean your project and Run.
于 2013-02-07T09:30:22.867 回答
0

我认为你有两个选择:

1- 将 jar 库的编译器设置为 1.6。

2-或者,使您的 jar 库实际上是一个 android 项目,并在 Eclipse 中将其标记为“库”。

如果您的 jar 库根本不使用任何 android 代码,我会选择 1。

于 2014-02-17T11:07:07.203 回答