私にはわかりにくいという単純な問題があります。私はgeoname WebService.searchメソッドを実行しようとしており、 "java.lang.StringIndexoutOfBoundsException"エラーが発生し続けます。私は普通の古いJavaの下でプログラムを走らせました。問題なく正常に動作します。私はAndroidの下でそれを実行し、私は "java.lang.StringIndexoutOfBoundsException"エラーを取得します。自分のマニフェストに「インターネット」権限が設定されています。このエラーは、Webservice.search(searchCriteria)が実行されたときに発生します。Androidでgeonamesを実行しているOutofBoundsException
package fau.edu;
import org.geonames.*;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainRoutine extends Activity {
TextView displayObject;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
displayObject = (TextView)findViewById(R.id.TextView01);
try {
String displayString;
//
// Toponomy Search
//
ToponymSearchCriteria searchCriteria = new ToponymSearchCriteria();
searchCriteria.setQ("Miami");
searchCriteria.setFeatureClass(FeatureClass.valueOf("H"));
searchCriteria.setCountryCode("US");
searchCriteria.setAdminCode1("FL");
searchCriteria.setFeatureCode("spng");
WebService.setUserName("******"); // username '*' out for public consumption. Actual code has valid name.
ToponymSearchResult searchResult = WebService.search(searchCriteria);
displayString = null;
for (Toponym toponym : searchResult.getToponyms()) {
displayString += toponym.getName() + " " + toponym.getCountryName() + "\n";
}
displayObject.setText(displayString);
}
catch(Exception e) {
e.printStackTrace();
displayObject.setText("Try Error...\n" + e.toString());
}
}
}
IはWebService.search(searchCriteria)メソッドの実行時に障害が発生します。ここでは、コードです。私はLogCatで取得エラーは、次のとおりです。
java.lang.StringIndexOutOfBoundsException
at java.lang.String.substring(String.java:1646
at org.jdom.input.SAXHandler.startElement(SAXHandler.java:568)
at org.apache.harmony.xml.ExpatParser.startElement(ExpartParser.java:146)
....
私は正しく私のJavaビルド・パスにjdom.jarとgeonames.-1.0.6.jarを入れているので、私はそこに問題があるとは思いません。興味深いのは、WebService.postalCodeSearch(postalSearch)とWebService.weatherIcao( "KPBI")を使用するコードを書き直したことです。問題なくAndroidで完全に動作します。私が言ったように、このコードはJava SE6の下で終日実行されます。何が間違っているかも知りませんか?
いいえ、少なくとも私はそうは思わない。このエラーは、WebService.searchメソッドが実行されたときに発生します。以前のように、Java SE6では動作しますが、Androidでは動作しません。また、WebServiceクラス内でWebService.postalCodeSearch()やWebService.weatherIaco()のように異なるメソッドを取得することもできます。 –
それはあなたが必要なものではなく、Androidの別のクラスからWebサービスが使用されているような愚かなものかもしれませんか?たぶんフルネームを使っているかもしれません(私はそのコードを知りません、 'org.geonames.webservice()'のようなものであると推測しています)それは本当に野生の推測ですが、他にはあまり知らないでしょう:) – Nanne
org.goenames.WebService.search()を試しましたが、運がありませんでした。ソースから始める以外に、ここから何をすべきか分からない。 geonamesはそこに.jarのソースを提供しました。あなたの提案をありがとう。 –