サンプルコードを実行しようとしていたAndroid 1.5エミュレータでアプリケーションを起動しているときに、これらのエラーが発生しました。
LogCatからのエラー:
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.Android.test/com.s.Android.test.MainActivity}: Java.lang.ClassNotFoundException: com.s.Android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.Android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1544)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1638)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.access$1500(ActivityThread.Java:117)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:928)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.os.Handler.dispatchMessage(Handler.Java:99)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.os.Looper.loop(Looper.Java:123)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.main(ActivityThread.Java:3647)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.reflect.Method.invokeNative(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.reflect.Method.invoke(Method.Java:507)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:839)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:597)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.NativeStart.main(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: Java.lang.ClassNotFoundException: com.s.Android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.Android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.PathClassLoader.findClass(PathClassLoader.Java:240)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.ClassLoader.loadClass(ClassLoader.Java:551)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.Instrumentation.newActivity(Instrumentation.Java:1021)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1536)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): ... 11 more
01-13 02:28:08.407: WARN/ActivityManager(112): Force finishing activity com.s.Android.test/.MainActivity
編集このエラーはほとんどの初心者に起こりますが、すべてのアクティビティをマニフェストファイルに追加する必要があります。
それはあなたの意図の問題です。
Activity
をAndroidManifest.xml
に追加してください。
新しいアクティビティを作りたいときは、あなたのAndroidManifest.xml
にそれを登録するべきです。
私の場合は、Googleマップライブラリを追加するのを忘れていました
<application>
....
<uses-library Android:name="com.google.Android.maps" />
</application>
また、アクティビティパスの前に先行するドットがないことを確認してください。
<activity Android:name=".activities.MainActivity"/>
onCreate()
の前にビューを見つけようとしている可能性がありますが、これは誤りです。
public class MainActivity extends Activity {
ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
...
}
Java.lang.RuntimeException:アクティビティComponentInfoをインスタンス化できませんという例外を取得する別の方法があります。それが、開始しようとしているアクティビティがabstractです。私はこのばかげた間違いを一度したのですが、見逃しやすいです。
それはまたこの問題のために起こります。私はapkにエクスポートする必要があるjarファイルのチェックを外し、これと同じことが起こりました。アプリの実行に必要なjarをチェックしてください。
私もこの問題に遭遇しましたが、少し違う方法で。これが私のシナリオです。
アプリ詳細:
<uses-library Android:name="com.google.Android.maps" />
を含めました(これは図書館では必要ないかもしれません)。しかし、私はまだ元の記事に記載されているエラーに遭遇し、それを消すことができませんでした。ただし、問題は1つの点でわずかに異なりました。
修正方法
この手順だけでは問題は解決しませんでした
Jarがビルドパスに追加されたら、[Java Build Path]> [Order and Export]タブで順序を変更しました - リストの最初の項目にJARを設定しました(/ src項目と/ gen項目の後の最後の項目です)。 ).
それから私は自分のデバイスにアプリを再構築して再デプロイしました - それはフレッシュインストールで期待通りに動作しました。念のために、私はそれを2-3回再度アンインストールして再インストールしました - それでも予想通りに動いた。
これは全くの新人の間違いかもしれませんが、私はそれを理解するために投稿と私のコードを掘り下げるのにかなりの時間を費やしたので、うまくいけばそれは他の誰かに役立つことができます。すべての状況を解決できるわけではありませんが、この特定のケースでは、それが私の問題の解決策になってしまいました。
これは実際の質問には関係ないかもしれませんが、私の例では、Kotlinを実装しようとし、apply plugin: 'kotlin-Android'
を省きました。 MainActivityを.ktファイルとして認識できなかったため、エラーが発生しました。
誰かに役立つことを願っています。
このエラーは、(私の友人が私に自分のコードを見せてくれたときのように)愚かなミスの最終的な兆候でもある可能性があります。 :
SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc
@Override
public void onCreate(Bundle savedInstanceState) {
....
}
これよりもむしろ:
SQLiteDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase("DB", MODE_PRIVATE, null);
....
}
プロジェクトからBin
およびGen
フォルダーを削除し(プロジェクトがビルドされるときに自動的に戻ってきます)、 - >メニュー - >プロジェクト - >クリーンの順に選択して、この問題を解決しました。
ありがとう。
私の場合はsetContentView(R.layout.main);
を設定していません
あなたが新しいクラスを作成する場合、onCreate(Bundle savedInstanceState)
メソッドでこれを設定するのを忘れないでください。
私はこのばかげた間違いを何度かしました。
私にとっては、AndroidManifest.xml
のパッケージ文字列が正しくありませんでした(チュートリアルからコピー)。このファイルのパッケージ文字列があなたの主な活動がある場所と同じであることを確認してください。
package="com.example.app"
これを行う簡単な方法は、[Manifest]タブでAndroidManifest.xmlファイルを開き、[Package]の横のテキストボックスに入力するか、[Browse]ボタンを使用することです。
また、私のアクティビティのパッケージ文字列が間違っていました。
<activity Android:name="com.example.app.MainActivity" Android:label="@string/app_name">
私は(愚かにも)私が自分のパッケージ名を変更したときに同じエラーを数週間後に受けました。これを行う場合は、必ずAndroidManifest.xml
ファイルも更新してください。
作業中のプロジェクトをクリーンアップするか、Eclipseを再起動してください。その後、プロジェクトを実行してください。それが動作します。
わかりました、私はiPhoneでかなり経験がありますが、Androidは初めてです。私が持っていたとき、私はこの問題を得ました:
Button infoButton = (Button)findViewById(R.id.InfoButton);
上記のコード行:
@Override
public void onCreate (Bundle savedInstanceState) {
}
私は眠れないかもしれません:P
私は最近Eclipseを再インストールしたときにこれに遭遇しました。私のコンパイラのコンプライアンスレベルはJava 1.7に設定され、プロジェクトは1.6を要求しました。
Eclipseの場合:プロジェクト - >プロパティ - > Javaコンパイラ - > JDKコンプライアンス
これはあなたのアクティビティクラスがデフォルトパッケージの中にある場合に起こります。アクティビティクラスを新しいパッケージに移動して修正しました。 manifest.xmlを変更する
前
activity Android:name=".MainActivity"
後に
activity Android:name="new_package.MainActivity"
この問題のもう1つの理由は、ライブラリが見つからないことです。
[プロパティ] - > [Android]に移動して、ライブラリが正しく追加されていることを確認します。
私は同じ問題を抱えていましたが、マニフェストファイルで正しい名前で自分のアクティビティを宣言しました。
私の問題は、 "libs"フォルダにサードパーティのライブラリをインポートする必要がなく、自分のproyectでそれらを参照する必要があることでした(右クリック、プロパティ、Javaビルドパス、ライブラリ、Add Jar ...)。
この問題を解決し、アクティビティの「起動モード」プロパティを設定することで解決しました。
this answerのコメントでdjjeck
によって示唆されているように、私は自分のクラスにpublic
修飾子を入れませんでした。
そのはず
public class MyActivity extends AppCompatActivity {
それは私のような人を助けるかもしれません。
私は同じ問題を抱えていました(Activityをインスタンス化できません):
最初の理由:
私がアクセスしていた
Camera mCamera;
Camera.Parameters params = mCamera.getParameters();
前
mCamera = Camera.open();
正しい方法は、まずカメラを開き、次にパラメータにアクセスすることです。
2番目の理由:マニフェストファイルであなたの活動を宣言する
<activity Android:name=".activities.MainActivity"/>
第3の理由:マニフェストファイルでカメラの許可を宣言してください。
<uses-feature Android:name="Android.hardware.Camera"></uses-feature>
<uses-permission Android:name="Android.permission.CAMERA" />
お役に立てれば
私の場合、私は Facebook SDK を埋め込もうとしていましたが、間違ったアプリケーションIDを持っていました。したがって、エラーが発生していました。マニフェストファイルには、適切なメタデータが必要です。
<meta-data
Android:name="com.facebook.sdk.ApplicationId"
Android:value="@string/facebook_app_id" />
このエラーは、ActionBarActivity
を使用しているが、AppCompat
以外のスタイルを割り当てた場合にも発生します。
これを修正するには、アプリのスタイルの親を次のようなTheme.AppCompat
に設定するだけです。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
</style>
プロジェクト>プロパティ> Android>を右クリックして、以前のバージョンのAndroid 4.4で試してみた後、Android 4.4に変更して動作しました。
NDKを使うとき、これはかなり頻繁に起こります。 ndk-build
を実行するたびに、Eclipseで「クリーン」を実行する必要があることがわかりました。誰かに役立つことを願っています:)
私は上記のすべての解決策を試してみましたが、私には効果がありません。 extend
の代わりにAppCompatActivity
アクティビティを追加したところ、うまくいきました。
中古
public class MainActivity extends Activity
の代わりに
public class MainActivity extends AppCompatActivity
私は本当の問題がそれだったのか分からない。
Android Studio 2.3.3とAndroid Studio 3.0.0がインストールされている場合、開発用に2つのプログラムを切り替えるとこのエラーが発生します。これは、1つのプログラムでサポートされているクラスが他のプログラムでサポートされていない、またはその逆の状況が存在するためです。プロジェクトの開発に使用されているAndroid Studioのバージョンの一貫性を維持することが重要です。
アプリケーションのすべてのアクティビティがAndroidManifest.xmlファイルで正しく定義されていることを確認してください。
また、パスで始まる場合は、このパスが存在することを確認してください。
例えば。これはうまくいきません。
<activity Android:name=".com.example.Android.networkusage.NetworkActivity" Android:label="@string/app_name" >
アプリケーションの名前がcom.example.networkusage
の場合(不足している.Androidに注意してください。)
あるいは、マニフェスト内でアクティビティを定義するときにパスを含めないでください。彼らの名前だけを入れてください(それの前にドットが付いています)。
<activity Android:name=".NetworkActivity" Android:label="@string/app_name" >
isMinifyEnabled = false
が役に立つことがあります(起動する前にプロジェクトをきれいにしてください)
あなたの新しいアクティビティはAndroidManifest.xml
のような".NewActivity"
を追加します
</activity>
<activity Android:name=".NewActivity" />
また、現在のアクティビティでintent
を使用して他のアクティビティのgetIntent
から何かを取得し、取得したデータをonCreate
の前または上に設定している場合も、この例外がスローされます。
例えば。このような文字列を取得した場合
final String slot1 = getIntent().getExtras().getString("Slot1");
そして、このコード行をonCreate
の前/上に置くと、この例外がスローされます。
私の場合は、プロジェクト内に2つのバージョンの "Android-support-v4.jar"参照がありました。これを解決した後(追加/不正確な参照を削除)、問題を解決しました。
私の場合は、ウィンドウ>>設定>> Java >>ビルドパス>>ユーザライブラリ>>ライブラリの追加>>ユーザライブラリ>>の順に移動して、新しいAndroid 6.0ライブラリを追加する必要がありました。新しい
Android 6.0という名前を付けて、[OK]をクリックします。その後、 "sdklocation/platform/Android-23/Android.jar"にあるAndroid.jarファイルを追加します。
必ずAndroidプロジェクトでこれをすべて行ってください。
これは、古いバージョンのAndroidでは利用できず、v4サポートパッケージにも含まれていないHoneycombからのインポートを使用する2.2でActivity
を実行しようとしたときに起こりました。
ファイルをクリックしてプロジェクトを閉じ、もう一度開くだけです
OR
あなたがそれを開いてプロジェクトをきれいにしてから実行すると、私のために動作します。
この問題は、アプリのパッケージ名を変更するためです。解決策がないときにその問題に直面しましたが、怒りでプロジェクトを閉じます。
同じパッケージ名を持つ2つのプロジェクトがあり、そのうちの1つを他のプロジェクトの前に実行した場合にも、これが発生する可能性があるため、Eclipseは混乱します。私にとっては、同じワークスペースにあるEclipseのAndroidチュートリアルをコピーし、パッケージ名を同じままにしてActionBarSherlock(ABS)を追加したときに起こりました。
package="com.example.Android.whatever"
それで、私のAndroidManifest.xmlファイルでは、私のワークスペースにあったチュートリアルプロジェクトとコピーしたチュートリアルプロジェクトの両方がパッケージ文字列として持っていました:
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.Android.whatever"
....
</manifest>
リファクタリング(Eclipseでは、[パッケージ・エクスプローラー]タブでパッケージを右クリック> [Refractor]> [名前の変更...]を選択)してから、必要な場所に変更するだけです。 .Javaファイル)
私の場合は、アクティビティに対してonCreate
が呼び出される前でもコンポーネント(UI)を初期化しようとしていました。
UIコンポーネントがonCreate
の後のsetContentView
メソッドで初期化またはリンクされていることを確認してください。
注意:これはAndroidプログラミングを学んでいる間の私の最初の間違いです。
Activity
の名前が変更された場合、ほとんどの場合、AndroidManifest.xml
ファイルを除くプロジェクト全体に反映されていました。
手動でmanifest
に名前を追加するだけです。
<activity
Android:name="Activity_Class_Name"
Android:label="@string/app_name">
</activity>
こんなことしないで
ImageView imageView=findViewById(R.id.imageView);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
こんな感じ
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=findViewById(R.id.imageView);
あなたの分野のようにいくつかのエラーがあるかもしれません
public class Search_costumer extends Activity {
// you may have some errors like this
int x =3/0;
// I have error in initializing this variable too
MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
だから私のアドバイスはあなたのフィールドで直接ではなくonCreateメソッドですべての初期化を実行することです
そのように解決する
public class Search_costumer extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// you may have some errors like this
int x =3/0;
// I have error in initializing this variable too
MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener();
}
}