- 浏览: 350651 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
haoxinren:
: 不错 果然是hibernate 对数据库字段的问 ...
hibernate异常之表的映射 -
du_bo:
[b][/b]真的非常强大。。。多谢分享
牛B的js 时间控件(年月日时分秒) -
hd7139:
真的很强大,不错
牛B的js 时间控件(年月日时分秒) -
woguanqihu:
是啊大哥啊,给个图片多好啊
牛B的js 时间控件(年月日时分秒) -
kelenok:
火狐里貌似不显示控件
牛B的js 时间控件(年月日时分秒)
首先是this.getClass().getClassLoader().getResourceAsStream()的问题。
1. java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
at com.classLoader.resource.BinaryServiceManager.initialMapping(BinaryServiceManager.java:39)
at com.classLoader.resource.BinaryServiceManager.refresh(BinaryServiceManager.java:68)
at com.classLoader.resource.BinaryServiceServlet.doGet(BinaryServiceServlet.java:10)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
原因: 没有导入jaxen包,一般情况下,dom4j-1.6.1.jar和jaxen-1.1.1.jar要同时使用,后者是前者的基础包。
2, 源代码:
package com.classLoader.resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class BinaryServiceManager {
private HashMap<String, String> binaryMap = null;
private static BinaryServiceManager instance = null;
private BinaryServiceManager() {}
public static BinaryServiceManager getInstance() {
if (instance == null) {
instance = new BinaryServiceManager();
}
return instance;
}
private void initialMapping() {
HashMap<String, String> tempBinaryMap = new HashMap<String, String>();
Document doc = null;
try {
SAXReader reader = new SAXReader();
doc = reader.read(this.getClass().getClassLoader().getResourceAsStream("BinaryServiceMapping.xml"));
System.out.println(this.getClass().getClassLoader().getResourceAsStream("BinaryServiceMapping.xml"));
List binaryServiceList = doc.selectNodes("/binaryServiceMapping/binaryService");
Node binaryServiceInfo = null;
for (int i = 0; i < binaryServiceList.size(); i++) {
binaryServiceInfo = (Node) binaryServiceList.get(i);
String shortCode = binaryServiceInfo.selectSingleNode("./shortCode").getText();
List serviceList = binaryServiceInfo.selectNodes("./services/service");
List carrierList = binaryServiceInfo.selectNodes("./carriers/carrier");
for (int j = 0; j < serviceList.size(); j++) {
Node serviceInfo = (Node) serviceList.get(j);
String serviceId = serviceInfo.selectSingleNode("./serviceId").getText();
String serviceName = serviceInfo.selectSingleNode("./serviceName").getText();
for (int k = 0; k < carrierList.size(); k++) {
Node accountInfo = (Node) carrierList.get(k);
String carrierId = accountInfo.selectSingleNode("./carrierId").getText();
String carrierName = accountInfo.selectSingleNode("./carrierName").getText();
String key = shortCode + "::" + serviceId + "::" + carrierId;
System.out.println("shortCode=" + shortCode + " serviceId=" + serviceId + " carrierId=" + carrierId);
System.out.println("key=" + key);
tempBinaryMap.put(key, shortCode);
}
}
}
binaryMap = tempBinaryMap;
} catch (Exception e) {
e.printStackTrace();
}
}
public void refresh() {
initialMapping();
}
}
当刷新xml文件时,总是刷新失败,即使把classes下面的xml文件删除, this.getClass().getClassLoader().getResourceAsStream()仍能读取到数据,并且数据和服务启动时读取到的数据完全一样,查看了源代码,发现this.getClass().getClassLoader().getResourceAsStream()首先从java虚拟机中查找文件,如果找不到,再按文件路径查找,找到后放到虚拟机中,也就是说第一次读取的时候已经把文件放到Java虚拟机中了,所以再读取的时候,直接从虚拟机中读取,所以,不能刷新成功。 修改代码 doc = reader.read(this.getClass().getClassLoader, 修改代码如下,
InputStream input = null;
String path = this.getClass().getClassLoader().getResource(File.separator).getPath();
input = new FileInputStream(new File(path + File.separator + "BinaryServiceMapping.xml"));
doc = reader.read(input);
此时报了一个错误,
java.io.FileNotFoundException: F:\program%20files\tomcat-5.5.23\webapps\Agaro_4_0_Problem\WEB-INF\classes\BinaryServiceMapping.xml (系统找不到指定的路径。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at com.classLoader.resource.BinaryServiceManager.initialMapping(BinaryServiceManager.java:35)
at com.classLoader.resource.BinaryServiceManager.refresh(BinaryServiceManager.java:68)
at com.classLoader.resource.BinaryServiceServlet.doGet(BinaryServiceServlet.java:10)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
发现这样的写法系统不认空格键,也就是说文件夹的命名不能有空格键,把有空格的文件名的空格去掉,则能成功刷新xml文件。
发表评论
-
Java类的完整构造执行顺序(转)
2012-02-22 14:02 1111转自:http://hi.baidu.com/zh ... -
Class.forName( )你搞懂了吗?——转
2012-02-22 12:16 1051终于明白为什么加载 ... -
我常去的编程技术网站
2010-11-03 20:16 1359[序言] 其实大家都可以成为一个厉害的软件开发人员,希望大家通 ... -
java验证日期格式
2010-08-02 20:33 3478写道验证日期格式是否正确 @SuppressWarning ... -
实现JavaBeans到XML的相互转换
2009-10-19 18:21 891不用复杂的代码,就可以让您的JavaBeans自己控制到XML ... -
java进行数据加密
2009-06-23 18:01 3237本文主要谈一下密码学中的加密和数字签名,以及其在java中如何 ... -
DWRUtil未定义解决
2009-05-22 16:11 1927转自:http://www.iteye.com/topic/3 ... -
java面试宝典1
2009-05-22 11:34 1093java面试宝典 2009-04-06 19 ... -
java:comp/env
2009-04-29 15:21 3111try{ Context ctx=(Conte ... -
javamail pop3 原理
2009-04-27 15:53 1850在日常的生活中,书信往来是我们日常生活中不可缺少的一个环节。随 ... -
Tomcat中文手册
2009-04-27 13:44 1623本文档提供关于Tomcat的 ... -
apache james 使用手册
2009-04-22 17:12 1865一、简介 Apache James(Java Apache ... -
JMail 异常: java.lang.NoClassDefFoundError: javax/ac
2009-04-22 11:36 1898今天开发邮件系统,发送程序能在main函数中顺利运行.可是布署 ... -
java中进行二进制,八进制,十六进制,十进制间进行相互转换
2009-03-08 22:24 1670十进制转成十六进制:Integer.toHexString(i ... -
Class.forName()与new 的区别
2008-09-18 13:50 1428Class.forName(xxx.xx.xx) 返回的是一个 ... -
java 科学记数法数转为其他数值类型
2008-06-11 11:30 3487在实际用运中,经常遇到要把科学计数的数值转为其他类型的数值,比 ... -
java Date学习总结
2008-05-27 10:34 11881.计算某一月份的最大天数Calendar time=Cale ... -
XP系统如何配置JAVA环境变量
2008-05-14 11:40 3188点击我的电脑然后按右键——属性——高级——环境变量——新建—— ... -
java中的字节流和字符流的存储比较
2008-04-22 18:12 2437引用:http://wuliguo.blog.51ct ... -
java字节流和字符流
2008-04-22 18:09 6952Java流操作 对于我们常用的GBK中,英文是占用1个字 ...
相关推荐
本文将深入探讨如何使用Java读取资源文件,特别是properties类型的文件。 资源文件通常存储在项目的类路径(classpath)下,可以是.properties、.txt、.xml等形式,它们提供了与代码分离的配置选项。对于....
在这个场景下,我们将深入探讨如何在IntelliJ IDEA(Idea)环境中读取资源文件,特别是针对读取图片进行详细说明。 首先,我们需要了解Java类路径的概念。Java类路径是Java虚拟机(JVM)查找类和资源的路径。当项目...
本篇文章将详细探讨如何使用Properties类来读取资源文件,以及在实际应用中的安全检查。 首先,我们需要了解`Properties`类的基本用法。`java.util.Properties`继承自`Hashtable`,它提供了一种存储和检索配置参数...
5. **使用第三方库**: 有些库,如Apache Commons IO或Spring框架,提供了更高级的工具来处理资源读取,简化了从归档文件中获取资源的操作。 6. **实战示例**: - `TestWarAndJar1.java`可能包含了一个简单的示例,...
2. **使用`getResourceAsStream`方法**:此方法直接返回一个`InputStream`对象,可以用来读取资源文件的内容。 #### 四、常见问题与解决方案 1. **资源文件无法找到**: - 检查资源文件的路径是否正确,特别是是否...
在本文中,我们将详细探讨如何在Java Web环境中读取`webroot`文件下的属性文件。 1. **属性文件结构** 属性文件是键值对的简单文本格式,每一行代表一个键值对,以等号`=`或冒号`:`分隔键和值。例如: ``` ...
下面我们将详细探讨如何在Java中读取Properties文件。 首先,你需要确保你的项目中包含了一个Properties文件,比如`config.properties`。这个文件可以手动创建,也可以通过IDE自动生成。文件内容可能如下: ``` ...
在本案例中,我们将探讨如何在Java中读取配置文件,以实现`axun`的功能。 首先,我们需要了解配置文件的格式。在Java中,最常用的配置文件格式是`.properties`。这些文件包含了键值对,例如`key=value`的形式,便于...
下面,我们将深入探讨如何在Java中实现一个YAML文件读取工具类,并介绍相关的技术点。 首先,我们需要引入一个能够处理YAML文件的库。在Java中,SnakeYAML是一个广泛使用的开源库,它可以解析和生成YAML文档。在你...
对于大型项目,推荐使用类加载器来读取资源文件,这样可以避免因绝对路径导致的问题。这里是如何使用类加载器读取`.properties`文件的示例: ```java InputStream is = TestProperties.class.getResourceAsStream(...
本篇文章将详细探讨如何在Java中正确地从JAR包中加载资源文件,并提供相应的源码示例。 首先,理解Java类路径(classpath)是关键。类路径是指Java虚拟机(JVM)查找.class文件和其他资源文件的路径。当你运行一个...
因为静态代码块只执行一次,所以这种方式避免了每次创建类实例时都去读取资源文件的开销。例如: ```java public class AppConfig { static { InputStream inputStream = AppConfig.class.getResourceAsStream("/...
在开发SpringBoot微服务时,开发人员小明遇到了一个问题,即在本地开发环境中能够正常读取资源文件,如word文档或模板,但当项目被打包成jar并部署到服务器后,程序无法找到这些文件,导致运行时异常。这个问题在...
// 使用类路径下资源文件的路径 InputStream input = PropertiesReader.class.getResourceAsStream("/config.properties"); // 加载Properties文件 props.load(input); // 读取并打印Properties文件中的键值...
本篇文章将深入探讨如何在Java中读取`properties`文件,无需依赖任何第三方库。 首先,我们需要了解Java的标准库中提供的`java.util.Properties`类。这个类提供了一种存储和加载属性列表的方法,它能够处理`....
下面我们将深入探讨如何管理和使用资源文件,以及如何直接播放其中的音乐。 首先,理解资源文件的分类。资源文件通常分为两种类型:嵌入式资源和外部资源。嵌入式资源是将文件直接包含在程序集或应用程序中,例如在...
本文将详细介绍几种在Java中读取properties文件的方法,并探讨在不同场景下的适用性。 首先,最常用的读取properties文件的方法是利用`java.lang.Class`类的`getResourceAsStream(String name)`方法。例如: ```...
使用资源文件 在大型项目中,通常将配置文件放入类路径(classpath)中。此时,使用`ClassLoader`来获取输入流: ```java InputStream input = getClass().getClassLoader().getResourceAsStream("config....
在实际项目中,资源文件通常位于类路径下。可以使用`ClassLoader`来加载这些文件,如下所示: ```java InputStream is = getClass().getResourceAsStream("/config.properties"); Properties props = new ...
例如,我们可以获取`ConnectionPool`类的类加载器,然后根据类的包路径定位到`database.properties`,并通过`getResourceAsStream()`方法读取文件内容。伪代码如下: ```java ClassLoader loader = ConnectionPool....