2012/10/27
ClipboardManager で NoClassDefFoundError
Android の ClipboardManager もそんなクラスの一つです。
テキストを Clipboard にコピーする方法として、以下の様なコードがよく提示されています。
あえて import 文を見せているところが重要。
import android.content.ClipboardManager; // 省略 private void copyToClipboard(String text) { ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(text); }
これ、最近のADTでは、"Class requires API level 11 (current min is 7)" というように怒られます。
このエラー、「API11 未満ではこのクラスは提供されていないよ。」という意味ですから、この時点で何かおかしいとは思うわけですが、とりあえず、@TargetApi(11) をつけて問題を回避してみます。
import android.content.ClipboardManager; // 省略 @TargetApi(11) private void copyToClipboard(String text) { ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(text); }
これを、API11 未満の端末で動作させると、NoClassDefFoundError が発生します。
E/AndroidRuntime(221): java.lang.NoClassDefFoundError: android.content.ClipboardManager
先ほど Eclipse で警告が出ていたように、Class が存在していないようです。