【发布时间】:2013-01-22 18:00:42
【问题描述】:
我在 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 一个文件夹 Reeverse 包含两个类文件 Palindrome.class 和
ReverseSentence.class
这两个类的源码如下:-
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;
}
}
我没有得到解决问题的解决方案。我已尝试将 Android 首选项 -> 编译器 -> JDK 合规性修复为 1.7,因为我的 java 代码是使用 JDK 1.7 构建的。 但我仍然遇到应用程序崩溃。
我使用 Eclipse Juno EE 作为 java 开发 IDE,使用 Eclipse java ADT 作为 Android IDE。
这是一个简单的程序,用于检查 jar 文件在 android 中的可用性,但我收到 noClassDefFound 错误。可能我遗漏了一些东西,这是一个愚蠢的问题,但我仍然被困在这个问题上。
请帮忙....
【问题讨论】:
-
请出示你的logcat...
-
您对此有答案吗?如果有,您能否接受下面的答案或在下面发布您自己的答案并随后接受?
标签: android jar noclassdeffounderror