加载程序时不能正常启动,加载xml报错

报错日志:

Caused by: 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name "sqlMapClient" 
defined in file [D:\workspace\dtjt\webapp\WEB-INF\classes\spring\applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Error occurred. 
 Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. 
 Cause: java.lang.RuntimeException: Error parsing XPath "/sqlMapConfig/sqlMap". 
 Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  
Cause: org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.
Caused by: 
java.lang.RuntimeException: Error occurred.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  
Cause: java.lang.RuntimeException: Error parsing XPath "/sqlMapConfig/sqlMap". 
 Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. 

<!--StartFragment -->

 Cause: org.xml.sax.SAXParseException:  XML document structures must start and end within the same entity.
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:89)、
 

解决办法:

 设置JVM启动时 ,读取源文件的字符编码的参数 Dfile.encoding=UTF-8.此类问题即可解决。

因为我们在编写xml文件时,采用的都是UTF-8编码,所以jvm在读文件时也要采用UTF-8编码读。

 

 



 
 
  转载:
 

-Dfile.encoding解释:
在命令行中输入java,在给出的提示中会出现-D的说明:
-D<name>=<value>
               set a system property
-D后面需要跟一个键值对,作用是通过命令行向java虚拟机传递一项系统属性
对-Dfile.encoding=UTF-8来说就是设置系统属性file.encoding为UTF-8
那么file.encoding什么意思?字面意思为文件编码。
搜索java源码,只能找到4个文件中包含file.encoding的文件,也就是说只有四个文件调用了file.encoding这个属性。
在java.nio.charset包中的Charset.java中。这段话的意思说的很明确了,简单说就是默认字符集是在java虚拟机启动时决定的,依赖于java虚拟机所在的操作系统的区域以及字符集。
代码中可以看到,默认字符集就是从file.encoding这个属性中获取的。

 

=====

Java's file.encoding property on Windows platfor 
This property is used for the default encoding in Java, all readers and writers would default to using this property. file.encoding is set to the default locale of Windows operationg system since Java 1.4.2. System.getProperty("file.encoding") can be used to access this property. Code such as System.setProperty("file.encoding", "UTF-8") can be used to change this property. However, the default encoding can be not changed dynamically even this property can be changed. So the conclusion is that the default encoding can't change after JVM starts. java -dfile.encoding=UTF-8 can be used to set the default encoding when starting a JVM. I have searched for this option Java official documentation. But I can't find it.

在使用 WebView 加载 XML 文件遇到报错,可能的原因和解决方案如下: ### XML 文件加载失败的常见原因 1. **文件路径问题** 如果 XML 文件的路径不正确,WebView 将无法找到并加载该文件。通常,文件应放置在应用的 `assets` 目录中,并通过 `file:///android_asset/` 协议进行访问。例如: ```java webView.loadUrl("file:///android_asset/example.xml"); ``` 如果文件路径错误或文件未正确放入 `assets` 文件夹,将导致加载失败 [^1]。 2. **文件格式或编码问题** XML 文件的格式必须是标准的,且编码通常应为 UTF-8。如果文件中包含非法字符或格式不正确(如未闭合标签、标签嵌套错误等),WebView 无法正确解析,将导致加载失败 [^3]。 3. **MIME 类型设置不当** WebView 在加载本地文件需要正确的 MIME 类型。如果未正确设置,可能导致内容无法渲染。可以通过以下方式设置 MIME 类型为 `text/xml` 或 `application/xml`: ```java webView.loadDataWithBaseURL(null, xmlContent, "text/xml", "UTF-8", null); ``` 4. **网络权限问题** 如果尝试通过网络加载 XML 文件(如从 URL 加载),必须确保在 `AndroidManifest.xml` 中添加了网络权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 否则会因缺少权限导致加载失败 [^4]。 5. **明文传输限制(Cleartext not permitted)** Android 9.0(API 28)及以上版本默认禁止明文 HTTP 请求。如果 XML 文件是通过 HTTP 协议加载的,可能会出现 `net::ERR_CLEARTEXT_NOT_PERMITTED` 错误。解决方法是在 `AndroidManifest.xml` 中允许明文传输: ```xml <application android:usesCleartextTraffic="true" ...> </application> ``` 更佳实践是使用 HTTPS 协议加载资源以避免此类问题 [^2]。 6. **WebView 设置问题** WebView 需要启用 JavaScript 和 DOM 存储等功能,以支持更复杂的 XML 或嵌入式内容: ```java WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); ``` ### 解决方案示例 #### 示例 1:从 `assets` 加载 XML 文件 ```java webView.loadUrl("file:///android_asset/sample.xml"); ``` #### 示例 2:从字符串加载 XML 内容 ```java String xmlContent = "<root><item>Content</item></root>"; webView.loadDataWithBaseURL(null, xmlContent, "text/xml", "UTF-8", null); ``` #### 示例 3:允许明文传输(仅用于调试) ```xml <application android:usesCleartextTraffic="true" ...> </application> ``` #### 示例 4:启用 JavaScript 支持 ```java WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setDomStorageEnabled(true); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值