我在 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 错误。可能我遗漏了一些东西,这是一个愚蠢的问题,但我仍然被困在这个问题上。
请帮忙....