0

Eclispe ADT for androidで簡単なAndroidコードを使用して、入力文字列を逆にします。逆文字列関数は個別に記述され、jarファイルとしてエクスポートしました。次に、Androidプロジェクトのlibsフォルダーにjarを追加しました。プロジェクトの日食はamyエラーを表示していませんが、実行時にユーザー入力文字列を入力して文字列ボタンをクリックすると、エミュレーターに「残念ながら'My First Project'hasstopped」というメッセージが表示されます。

これは私のメインの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ファイル42つのクラスファイルPalindrome.classと
ReverseSentence.classを含むフォルダーReeverse

2つのクラスのソースコードは次のとおりです。-

Palindrome.class

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;     

}



}

問題を解決するための解決策が得られません。JavaコードはJDK1.7を使用して構築されているため、Androidの設定->コンパイラ->JDK準拠を1.7に修正しようとしました。しかし、まだアプリがクラッシュしています。

Java開発IDEとしてEclipseJunoEEを使用し、AndroidIDEとしてEclipsejavaADTを使用しています。

これはAndroidでjarファイルの使いやすさをチェックする簡単なプログラムですが、noClassDefFoundエラーが発生します。おそらく何かが足りないので、それはばかげた問題ですが、それでも私はこれで立ち往生しています。

助けてください....

4

2 に答える 2

0

次の 2 つのオプションがあると思います。

1- jar ライブラリのコンパイラを 1.6 に設定します。

2-または、jarライブラリを実際にAndroidプロジェクトにし、Eclipseで「ライブラリ」としてマークします。

あなたのjarライブラリがAndroidコードをまったく使用していない場合、私は1に行きます。

于 2014-02-17T11:07:07.203 に答える
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 に答える