- 浏览: 384086 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
h416373073:
重新加深印象了 谢谢博主
JAVA虚拟机参数说明 -
linsongze2012:
Spring JDBC注解 -
XiaoXiaoYang37790315:
大神,能详细描述一下么?谢了。。。找一天了
HSQLDB 带Connection的Stored Procedure -
liuxiang00435057:
看不明白说什么,现在正在做这个
HSQLDB 带Connection的Stored Procedure -
yqsshr:
不错 谢谢博主 知道xms xmx及permsize和ma ...
JAVA虚拟机参数说明
这个本来应该是写在项目组开发BLOG上的。但最近换了办公环境之后,项目组原来的BLOG服务器搬到其它地方去了。现在还没有恢复项目组内部BLOG,所以,记在这里,待日后再恢复吧:)
昨天代码从一个分支Merge到主干版本,我的本地开发环境建立上有问题。连续出现在新开发环境中无法运行测试用例。跟踪发现是项目中使用的实体工具的问题。究其原因在于系统无法找到hibernate.cfg.xml文件。
我们知道JAVA程序在编译的时候,是通过CLASSPATH来访问各种资源,很明显的,hibernate.cfg.xml是放在Eclipse的CLASSPATH路径下的。(因此,我将需要使用的这些文件都作为src,那么自然这些文件都会在CLASSPATH的路径中)实体工具使用的datasource.xml配置正确,hibernate.cfg.xml关于hibernate的configuration也配置正确,但是DOCTYPE定义不对
PublicIdentifier 提供一个独立的标识符,有些 XML 分析器可以使用该标识符引用 DTD,代替 URIreference。如果使用分析器的系统没有网络连接,或该连接可能会明显减慢处理速度,可以使用此标识符。
在实际中
这样写才是符合规范的。
定义成这种方式,最主要的问题是如何找到hibernate-configuration-3.0.dtd这个文件,具体放到那个目录下呢?
以前读DOCTYPE解析代码的时候,发现它就是从文件系统中找。但是,加载位置非常奇怪,如果是<!DOCTYPE hibernate-configuration SYSTEM "/hibernate-configuration-3.0.dtd">,那就是应用所在的根目录地址,比如:d:\
现在这么写的话,这个目录在什么地方呢?有几个地方,一个在CLASSPATH下,已经证明错误。在什么其它地方?莫非在ECLIPSE的Classpath下?这就真的不清楚了。事实上这个问题非常让人困扰。
如果我们的引用要解析XML文件需要用到的DTD在远端,显然不合适。想了一下,我们直接在DOCTYPE中定义文档类型结构定义不就OK了么?
代码如下:
这样,系统在解析hibernate.cfg.xml的时候也不用去找dtd定义,直接读取这个文件就OK了。问题到此已经解决了。
回想一下,XML当初要把DTD分离出来就是为了复用的目的,但是,在我们的应用场合,我们不需要这样的复用。相反,都放在一个文件当中效率还提高了。真是两极矛盾。
昨天代码从一个分支Merge到主干版本,我的本地开发环境建立上有问题。连续出现在新开发环境中无法运行测试用例。跟踪发现是项目中使用的实体工具的问题。究其原因在于系统无法找到hibernate.cfg.xml文件。
我们知道JAVA程序在编译的时候,是通过CLASSPATH来访问各种资源,很明显的,hibernate.cfg.xml是放在Eclipse的CLASSPATH路径下的。(因此,我将需要使用的这些文件都作为src,那么自然这些文件都会在CLASSPATH的路径中)实体工具使用的datasource.xml配置正确,hibernate.cfg.xml关于hibernate的configuration也配置正确,但是DOCTYPE定义不对
<!DOCTYPE rootElement PUBLIC "PublicIdentifier" "URIreference"> <!DOCTYPE rootElement SYSTEM "URIreference"[ declarations ]>
PublicIdentifier 提供一个独立的标识符,有些 XML 分析器可以使用该标识符引用 DTD,代替 URIreference。如果使用分析器的系统没有网络连接,或该连接可能会明显减慢处理速度,可以使用此标识符。
在实际中
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
这样写才是符合规范的。
<!DOCTYPE hibernate-configuration SYSTEM "hibernate-configuration-3.0.dtd">
定义成这种方式,最主要的问题是如何找到hibernate-configuration-3.0.dtd这个文件,具体放到那个目录下呢?
以前读DOCTYPE解析代码的时候,发现它就是从文件系统中找。但是,加载位置非常奇怪,如果是<!DOCTYPE hibernate-configuration SYSTEM "/hibernate-configuration-3.0.dtd">,那就是应用所在的根目录地址,比如:d:\
现在这么写的话,这个目录在什么地方呢?有几个地方,一个在CLASSPATH下,已经证明错误。在什么其它地方?莫非在ECLIPSE的Classpath下?这就真的不清楚了。事实上这个问题非常让人困扰。
如果我们的引用要解析XML文件需要用到的DTD在远端,显然不合适。想了一下,我们直接在DOCTYPE中定义文档类型结构定义不就OK了么?
代码如下:
<!DOCTYPE hibernate-configuration [ <!ELEMENT hibernate-configuration (session-factory,security?)> <!ELEMENT property (#PCDATA)> <!ATTLIST property name CDATA #REQUIRED> <!ELEMENT mapping EMPTY> <!-- reference to a mapping file --> <!ATTLIST mapping resource CDATA #IMPLIED> <!ATTLIST mapping file CDATA #IMPLIED> <!ATTLIST mapping jar CDATA #IMPLIED> <!ATTLIST mapping package CDATA #IMPLIED> <!ATTLIST mapping class CDATA #IMPLIED> <!ELEMENT class-cache EMPTY> <!ATTLIST class-cache class CDATA #REQUIRED> <!ATTLIST class-cache region CDATA #IMPLIED> <!ATTLIST class-cache usage (read-only|read-write|nonstrict-read-write|transactional) #REQUIRED> <!ATTLIST class-cache include (all|non-lazy) "all"> <!ELEMENT collection-cache EMPTY> <!ATTLIST collection-cache collection CDATA #REQUIRED> <!ATTLIST collection-cache region CDATA #IMPLIED> <!ATTLIST collection-cache usage (read-only|read-write|nonstrict-read-write|transactional) #REQUIRED> <!ELEMENT event (listener*)> <!ATTLIST event type (auto-flush|merge|create|delete|dirty-check|evict|flush|flush-entity|load|load-collection|lock|refresh|replicate|save-update|save|update|pre-load|pre-update|pre-insert|pre-delete|post-load|post-update|post-insert|post-delete|post-commit-update|post-commit-insert|post-commit-delete) #REQUIRED> <!ELEMENT listener EMPTY> <!ATTLIST listener type (auto-flush|merge|create|delete|dirty-check|evict|flush|flush-entity|load|load-collection|lock|refresh|replicate|save-update|save|update|pre-load|pre-update|pre-insert|pre-delete|post-load|post-update|post-insert|post-delete|post-commit-update|post-commit-insert|post-commit-delete) #IMPLIED> <!ATTLIST listener class CDATA #REQUIRED> <!ELEMENT session-factory (property*, mapping*, (class-cache|collection-cache)*, event*, listener*)> <!ATTLIST session-factory name CDATA #IMPLIED> <!-- the JNDI name --> <!ELEMENT security (grant*)> <!ATTLIST security context CDATA #REQUIRED> <!--the JACC contextID--> <!ELEMENT grant EMPTY> <!ATTLIST grant role CDATA #REQUIRED> <!ATTLIST grant entity-name CDATA #REQUIRED> <!ATTLIST grant actions CDATA #REQUIRED> ]>
这样,系统在解析hibernate.cfg.xml的时候也不用去找dtd定义,直接读取这个文件就OK了。问题到此已经解决了。
回想一下,XML当初要把DTD分离出来就是为了复用的目的,但是,在我们的应用场合,我们不需要这样的复用。相反,都放在一个文件当中效率还提高了。真是两极矛盾。
发表评论
-
答复: 美工和开发人员同步开发的问题
2008-06-01 10:45 1226呵呵,也看看别人是怎么做的吧。 这个看上去不错。 chbe ... -
两个小命令
2008-03-20 17:12 9611. sc delete 服务名称 sc的话就可以看到相 ... -
需求分析师的职责
2007-10-10 16:12 4907项目快要启动了,感觉很兴奋,终于快要到战场了。需 ... -
读《质量·软件·管理》有感
2007-10-06 10:57 1247以前这本书是读过的,现在再来读又是别有一番滋味。 ... -
项目 OR 产品
2007-09-27 18:14 1026http://www.blogjava.net/rocket/ ... -
非习惯用法
2007-09-26 14:19 1050getText public String getText( ... -
配置管理
2007-09-21 16:44 1158Label和Branch在配置管理过程中是很重要 ... -
配置管理
2007-09-12 22:21 1382这两天不清闲,前后比较了VSS,CVS以及SVN ... -
UML培训
2007-07-22 20:33 1336下午Leader Yuan请了UMLCHINA的站 ... -
领域模型 And 事务脚本
2007-07-06 17:54 3502事务脚本和领域模型之间的区别还是很明显的,显然 ... -
软件架构设计--读书心得
2007-07-02 23:19 1247抓紧时间把温 ... -
软件架构设计
2007-06-28 23:57 1999先推荐一本书 ... -
IT Support
2007-06-18 21:23 1394一个客户那边又出问题了,这次和上次的问题就是同 ... -
现场办公
2007-06-07 13:15 1067今天做了回技术支持,去给直真公司解决我们产品使用 ... -
日志处理:承重的代价
2007-06-06 18:50 1327客户那边出了点问题,我以前编写的一个功能老是在 ... -
代码评审
2007-06-05 11:40 3005以前没有做过 ... -
异常的处理层次
2007-05-31 19:56 1116其实,正如Rod Johnson所说,一般数据 ... -
Content is not allowed in prolog
2007-05-23 14:05 6163没有办法,这个问题我现在还没有解决它。 ... -
需求:远近高低各不同
2007-05-22 22:59 1146下午对BUG导入 ... -
Eclipse的几个有用插件
2007-05-13 14:11 1434最近在做项目组的代码编写规范,同时,也接触到了几 ...
相关推荐
在安装最新版Eclipse时,需要注意以下关键知识点: 1. **版本选择**:Eclipse有多个版本,如Photon、Oxygen、202x系列等,每个版本都有其特定的更新和特性。最新版通常在Eclipse官网可下载,例如Eclipse IDE for ...
2. 安装 Tomcat:下载并解压缩 Tomcat,拷贝到一个地方,需要注意的是需要把 JDK6 目录中的 tools.jar 拷贝到 Tomcat 中的 lib 目录下。 3. 安装 Eclipse:下载并解压缩 Eclipse,得到一个 eclipse 目录,把这个目录...
- 分离源码与构建:有时为了区分源码和构建产物,会将构建目录放在单独的地方,links则能方便地将两者关联。 3. **创建Links的步骤:** - 打开Eclipse,进入"File"菜单,选择"New",然后点击"Linked Folder"。 -...
在使用Eclipse时,用户需要创建工作空间(Workspace),这是存储项目和配置的地方。Eclipse提供了强大的代码编辑器、项目管理、版本控制集成、构建工具和调试器等功能。对于初学者,理解Eclipse的视图(Views)、...
9. **构建和运行**: 最后,你可以像平常一样在Eclipse中构建和运行项目。Eclipse会自动调用NDK来编译本地代码,并将其与Java代码一起打包进APK。 通过以上步骤,你就能在Eclipse中成功集成Android NDK,进行混合式...
- **工作空间设置**:Eclipse的工作空间是项目存储的地方,可以设置默认位置,以及自定义编码格式、构建路径等。 - **JRE配置**:选择要使用的Java运行环境,包括JDK版本和路径。 - **插件安装与管理**:Eclipse通过...
对于初学者,安装Eclipse时,需要注意以下几点: 1. 确保操作系统是64位的,以匹配下载的64位Eclipse版本。 2. 下载完成后,解压到任何方便的位置,无需安装过程,直接运行可执行文件即可启动Eclipse。 3. 首次启动...
2. **创建Eclipse项目**:在Eclipse中新建一个Java项目,这是我们将编写和运行OpenGL程序的地方。 3. **导入JOGL库**:将JOGL的`.jar`文件添加到项目的构建路径中。右键点击项目 -> "Build Path" -> "Configure ...
运行Eclipse,首次启动时会提示设置工作空间,这是保存项目和配置信息的地方。建议选择一个空旷且容易访问的位置,以便于管理和备份。设置完毕后,Eclipse将会加载并显示其主界面。 接下来是插件的安装,这里以...
运行Eclipse,首次启动会提示设置工作空间,这是保存项目的地方。选择一个合适的位置,确保有足够的磁盘空间。 配置Eclipse的基础步骤包括: 1. **安装JDK**: Eclipse需要Java Development Kit(JDK)才能运行。...
7. **WorkSpace(工作空间)**:工作空间是 Eclipse 存储项目文件的地方。每个 Eclipse 实例只能在一个时间使用一个工作空间,但多个 WorkbenchWindow 可以共享同一个工作空间。 8. **Perspective(透视图)**:...
- **性能优化**:由于Nebula组件功能强大,需要注意性能优化,避免在大数据量或复杂界面时出现性能问题。 总之,Eclipse Nebula是一个非常有价值的工具,它极大地丰富了Eclipse的UI开发能力,使得开发者能够构建出...
- 工作区:Eclipse的工作区是项目存储的地方,可以设置多个工作区以区分不同项目。 - 工作区切换:在“文件”菜单中选择“切换工作区”进行切换。 3. **创建Java项目** - 新建项目:在"文件"菜单中选择"新建"->...
- 在首次启动时,可能会提示选择工作空间(workspace),这是存储项目文件的地方。 - 可以根据个人习惯对界面进行自定义调整,比如布局、字体大小等。 - 如果需要支持特定的语言开发,可以通过“Help”菜单中的...
- 在使用RecyclerView时,注意性能优化,如使用ViewHolder减少视图复用的开销,以及在合适的地方调用notifyDataSetChanged()更新数据。 - 如果遇到编译问题,检查依赖库的版本是否与项目支持的Android版本兼容。 ...
安装Eclipse时,用户需要注意选择适合自己开发需求的版本,如Java EE版、经典版等。工作空间是Eclipse中存储项目和个人设置的地方,理解其作用并合理配置能提升开发效率。项目管理涉及创建、导入、组织和构建项目,...
工作空间是Eclipse保存项目和配置的地方,你可以根据需要设置。 2. **配置Eclipse**:在启动界面,你可以通过“工作区”选项选择或创建一个新的工作空间。此外,Eclipse会询问是否导入之前的设置,这取决于你的个人...
传统的Web 2.0和丰富的互联网应用(RIA)虽然流行,但在某些场景下可能无法满足特定的需求,特别是当需要更复杂的交互和本地资源访问能力时。在这种背景下,Eclipse Rich Client Platform (RCP)作为一种新兴的选择,...
- 首次启动时,Eclipse会引导你进行工作空间设置,这是存放项目和配置信息的地方。 - 根据需要安装或更新插件,Eclipse的Marketplace提供了丰富的选择。 2. **Eclipse界面**: - 工作台(Workbench):包含多个...
- **工作空间设置**:`File > Switch Workspace > New...`可创建新工作空间,工作空间是Eclipse保存项目和个人首选项的地方。 - **项目创建**:通过`File > New > Project`创建新项目,选择相应类型的Java项目,如...