源文件中没有错误(osmand)
我使用了eclipse和sdk模拟器2.2从googlecode (osmand应用程序)签出
我的代码:
public void onCreate(){
super.onCreate();
routingHelper = new RoutingHelper(OsmandSettings.getApplicationMode(OsmandSettings.getPrefs(OsmandApplication.this)), OsmandApplication.this, player);
manager = new ResourceManager(this);
daynightHelper = new DayNightHelper(this);
uiHandler = new Handler();
startApplication();
} 这些都是logcat中的错误:
05-04 07:53:01.807: ERROR / AndroidRuntime (308): FATAL EXCEPTION: main
05-04 07:53:01.807: ERROR / AndroidRuntime (308): java.lang.RuntimeException: Unable to create application net.osmand.activities.OsmandApplication: java.lang.IllegalArgumentException: InputStream can not be null
05-04 07:53:01.807: ERROR / AndroidRuntime (308): Has android.app.ActivityThread.handleBindApplication (ActivityThread.java: 4247)
05-04 07:53:01.807: ERROR / AndroidRuntime (308): Has android.app.ActivityThread.access $ 3000 (ActivityThread.java: 125)
05-04 07:53:01.807: ERROR / AndroidRuntime (308): at $ android.app.ActivityThread H.handleMessage (ActivityThread.java: 2071)
05-04 07:53:01.807: ERROR / AndroidRuntime (308): Has android.os.Handler.dispatchMessage (Handler.java: 99)
05-04 07:53:01.807: ERROR / AndroidRuntime (308): Has android.os.Looper.loop (Looper.java: 123)
05-04 07:53:01.807: ERROR / AndroidRuntime (308): Has android.app.ActivityThread.main (ActivityThread.java: 4627)
05-04 07:53:01.807: ERROR / AndroidRuntime (308): Has java.lang.reflect.Method.invokeNative (Native Method
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at java.lang.reflect.Method.invoke(Method.java:521)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at dalvik.system.NativeStart.main(Native Method)
05-04 07:53:01.807: ERROR/AndroidRuntime(308): Caused by: java.lang.IllegalArgumentException: InputStream cannot be null
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at javax.xml.parsers.SAXParser.parse(SAXParser.java:185)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.OsmandRenderingRulesParser.parseRenderingRules(OsmandRenderingRulesParser.java: 104)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.BaseOsmandRender.init(BaseOsmandRender.java:41)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.RendererRegistry.loadRenderer(RendererRegistry.java: 116)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.RendererRegistry.loadRenderer(RendererRegistry.java: 103)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.RendererRegistry.getRenderer(RendererRegistry.java: 93)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.RendererRegistry.getRenderer(RendererRegistry.java: 84)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.RendererRegistry.defaultRender(RendererRegistry.java: 54)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.OsmandRenderer.<init>(OsmandRenderer.java:239)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.MapRenderRepositories.<init>(MapRenderRepositories.java: 79)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.ResourceManager.<init>(ResourceManager.java:98)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.activities.OsmandApplication.onCreate(OsmandApplication.java: 51)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java: 969)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4244)
05-04 07:53:01.807: ERROR/AndroidRuntime(308): ... 10 more发布于 2011-05-04 16:43:31
在运行时(执行时),您将一个null值传递给一些期望/需要InputStream实例(或任何子类)的方法。这种类型的错误不能被编译器检测到,因此你的源代码会被编译。
调试:在源代码中找到导致运行时异常的代码行。在这一行,您将找到一些InputStream变量,并且您必须分析源代码,以回答为什么以及在哪些条件下,变量持有null而不是流引用。
从您的堆栈跟踪中,我看到这三行给出了问题的提示:
05-04 07:53:01.807: ERROR/AndroidRuntime(308): Caused by: java.lang.IllegalArgumentException: InputStream cannot be null
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at javax.xml.parsers.SAXParser.parse(SAXParser.java:185)
05-04 07:53:01.807: ERROR/AndroidRuntime(308):at net.osmand.render.OsmandRenderingRulesParser.parseRenderingRules(OsmandRenderingRulesParser.java: 104) 应用程序试图打开一个xml文件(从日志中找不到该文件的名称),但应用程序找不到此xml。
因此,您必须找出需要哪个文件(该文件应该包含某种呈现规则),以及它必须存储在哪里,以便应用程序找到它。一旦解析器可以加载丢失的文件,错误就会消失。
https://stackoverflow.com/questions/5880609
复制相似问题