0
나는 서비스에서 내 애플 리케이션의 자산을 얻으려고하고있어 nullpointexception을 얻습니다. 나는 it.but에 대한 몇 가지 기사를 찾았지만, 내 실수는 어디서나. 의 예외입니다안드로이드 getAssets() 메소드가 NullPointerException을 던졌습니다
public class OCRService extends IntentService{
private static final String TAG = "OCRService";
public static final String DATA_PATH = Environment.getExternalStorageDirectory().toString() + "/SimpleAndroidOCR/";
public OCRService() {
super("OCRService");
String path = new String(DATA_PATH + "tessdata/");
File dir = new File(path);
if (!new File(path).exists() && !dir.mkdirs()) {
Log.e(TAG, "ERROR: Creation of directory " + path + " on sdcard failed");
return;
} else {
Log.v(TAG, "Created directory " + path + " on sdcard");
if (!(new File(DATA_PATH + "tessdata/" + "eng.traineddata")).exists()) {
try {
AssetManager assetManager = getAssets();
for (String file : assetManager.list("tessdata")) {
InputStream in = assetManager.open("tessdata/" + file);
OutputStream out = new FileOutputStream(DATA_PATH + "tessdata/" + file);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
Log.v(TAG, "Copying ocr traineddata sacceded");
} catch (IOException e) {
Log.e(TAG, "Was unable to copy osr traineddata "+ e.toString());
}
}
}
}
:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate service com.pc.droidhelper.services.OCRService: java.lang.NullPointerException
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2241)
at android.app.ActivityThread.access$1600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4476)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:816)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:583)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
at com.pc.droidhelper.services.OCRService.<init>(OCRService.java:41)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2238)
... 10 more
당신이에 getAssets을 볼 수있는이 서비스에서 호출
는 어디 코드입니다. 거기에 컨텍스트가 있습니다. 나는 주요 활동에서 getAssets를 사용할 것이라고 읽었다. 제발 전화 내 이유, 차이점은 무엇입니까.
. 서비스와 액티비티는 일반적인 "생성자 사용"접근법을 사용하지 않고, 대신에 startActivity()/startService()와 결합 된 Intents에 의해 호출됩니다. 그런 다음 그들은 onCreate()에서 초기화 작업을 수행합니다. –