热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

愁人啊hibernateorg.hibernate.DuplicateMappingException:

我确定我的配置文件中没有相同的*.hbm.xml,也没有相同的类名,*.hbm.xml也是没有错误的,我用的是struts2+hibernate%%%%ErrorCreatingSessio
我确定我的配置文件中没有相同的*.hbm.xml,也没有相同的类名,*.hbm.xml也是没有错误的,我用的是struts2+hibernate
%%%% Error Creating SessionFactory %%%%
org.hibernate.InvalidMappingException: Could not parse mapping document from resource ./com/shangjia/manage/vo/Syspar.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
at com.shangjia.manage.util.HibernateSessionFactory.(HibernateSessionFactory.java:31)
at com.shangjia.manage.biz.OperatorBiz.findAllOperator(OperatorBiz.java:25)
at com.shangjia.manage.action.SystemAction.login(SystemAction.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at rcept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.shangjia.manage.vo.Syspar
at org.hibernate.cfg.Mappings.addClass(Mappings.java:118)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:145)
at org.hibernate.cfg.Configuration.add(Configuration.java:669)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
... 121 more

41 个解决方案

#1


补充说明:上面的异常信息连报了两次,hibernate.cfg.xml配置文件如下:
更为奇怪的是,我把Syspar.hbm.xml放到第一位,报异常就是uplicate class/entity mapping com.shangjia.manage.vo.Syspar,如果我把其他的*.hbm.xml放到第一位,就报uplicate class/entity mapping com.shangjia.manage.vo.*

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
          







org.hibernate.connection.ProxoolConnectionProvider

DBPool
proxool.xml









 





#2


Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.shangjia.manage.vo.Syspar
你看看映射 和数据库的字段 是不是数据类型不匹配

#3


引用 2 楼 zn85600301 的回复:
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.shangjia.manage.vo.Syspar
你看看映射 和数据库的字段 是不是数据类型不匹配

我觉得不是这个问题,这个项目之前是可以运行的,各个功能测试都没有问题,突然报了这个异常。。。

#4


贴出你的hbm.xml

#5


引用 4 楼 whut_lcy 的回复:
贴出你的hbm.xml

全贴出来啊,关键不是Syspar这个,我把那个类的配置文件放在第一位,就会报哪个类的错误,错误信息除了类名之外都一样。。   System.hbm.xml内容如下:


"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


    
        
            
            
        
        
            
                类型
            
        
        
            
                类别
            
        
        
            
                类别值
            
        
        
            
                备注
            
        
    

#6


服务器,eclipse,全部重启,项目删掉,重新部署。试一试吧,多半没用。

#7


引用 6 楼 s0s0s0s 的回复:
服务器,eclipse,全部重启,项目删掉,重新部署。试一试吧,多半没用。

刚才试过了,不行啊。。。

#8


你的路径怎么写成="./com/shangjia/manage/vo/Syspar.hbm.xml
直接就写成com/shangjia/manage/vo/Syspar.hbm.xml

#9


这个问题很怪异- -
建议楼主挨个测试测试,比如说去掉这个,换掉那个,这样来找问题

#10


引用 8 楼 closewbq 的回复:
你的路径怎么写成="./com/shangjia/manage/vo/Syspar.hbm.xml
直接就写成com/shangjia/manage/vo/Syspar.hbm.xml

  应该不是路劲的问题,不然报的错误也不是这样子! 这个应该和配置有关系,建议LZ好好配置文件!

#11


重建一个同样的项目,把内容一点点的往里加,直到出错。

#12


引用 9 楼 chris1012f 的回复:
这个问题很怪异- -
建议楼主挨个测试测试,比如说去掉这个,换掉那个,这样来找问题

这个方法我已经试过了,一共就下面这几个文件,我注释掉Syspar.hbm.xml,系统就报Housearea错误,错误信息除了类名之外,其他的都一样,我注释掉前两个,就报第三个的错误,反正是哪个排在第一位就报哪个的错误,我在网上查了查,有的说在spring的项目中hibernate.cfg.xml被加载了两次,所以报这个错误,可是我没有用spring啊,难道我这个hibernate文件也被加载了两次?








#13


那lz配置hibernate相关的文件就hibernate.cfg.xml吗,如果其它开发人员在其它文件配置了诸如
       com/shangjia/manage/vo/*.hbm.xml
的话,就加载2遍了。

#14


引用 13 楼 cnmb1 的回复:
那lz配置hibernate相关的文件就hibernate.cfg.xml吗,如果其它开发人员在其它文件配置了诸如
       com/shangjia/manage/vo/*.hbm.xml
的话,就加载2遍了。

这个是个人项目,就俺一个人。。。

#15


楼主你这种配置是可以根据mapping文件生成表的对吧?那你把数据库表清空,然后把mapping的类都去掉,然后部署启动,看看数据库表有没有生成。
如果生成,说明有其他地方已经mapping过了。
如果没有生成,那可以确定项目中只有一个mapping的地方,但是加载了2遍。

#16


你的代码里是否有sessionFactory = config.configure().buildSessionFactory这样的手动加载hibernate配置?如果你Spring已经加载了你的hibernate.cfg.xml而你又再次手工加载时,会报这个错
,检查com.shangjia.manage.util.HibernateSessionFactory这里的调用方式

建议不用hibernate.cfg.xml来做hibernate的配置,而把这些配置全部交给spring的配置文件来做

#17


引用 15 楼 cnmb1 的回复:
楼主你这种配置是可以根据mapping文件生成表的对吧?那你把数据库表清空,然后把mapping的类都去掉,然后部署启动,看看数据库表有没有生成。
如果生成,说明有其他地方已经mapping过了。
如果没有生成,那可以确定项目中只有一个mapping的地方,但是加载了2遍。

是可以根据配置文件生成表,但是去掉mapping的类,怎么还能生成表呢?能详细说明吗?

#18


引用 16 楼 qingyuan18 的回复:
你的代码里是否有sessionFactory = config.configure().buildSessionFactory这样的手动加载hibernate配置?如果你Spring已经加载了你的hibernate.cfg.xml而你又再次手工加载时,会报这个错
,检查com.shangjia.manage.util.HibernateSessionFactory这里的调用方式

建议不用……

我确实手动加载了hibernate配置,但是我没有用spring。

#19


我记得hibernate会默认加载classpath下的hibernate.cfg.xml。(很久很久以前学的,忘了)。
lz又手动加载了一遍,可能原因就在这儿了。

#20


引用 19 楼 cnmb1 的回复:
我记得hibernate会默认加载classpath下的hibernate.cfg.xml。(很久很久以前学的,忘了)。
lz又手动加载了一遍,可能原因就在这儿了。

不是这样的,我不用手动加载的话,会报错:说是应该指定一个确定的方言,还有就是现在这个异常。。。
手动加载之后,就只报现在这个异常了。

#21


这什么东东,错误就在初始化SessionFactory的时候发生的,贴个源码给大家瞧瞧。
com.shangjia.manage.util.HibernateSessionFactory,
com.shangjia.manage.biz.OperatorBiz

#22


晕了........

#23


引用 21 楼 prosp4300 的回复:
这什么东东,错误就在初始化SessionFactory的时候发生的,贴个源码给大家瞧瞧。
com.shangjia.manage.util.HibernateSessionFactory,
com.shangjia.manage.biz.OperatorBiz

HibernateSessionFactory 用于Creating SessionFactory 
OperatorBiz是对员工信息进行操作的业务类,应该不是这的问题,问题出在 创建SessionFactory 工厂的时候,而且说原因是有两个实体映射

#24


lz确定代码里手动加载hibernate配置的地方只有一处吗?

#25


引用 24 楼 cnmb1 的回复:
lz确定代码里手动加载hibernate配置的地方只有一处吗?

相当确定。。。

#26


引用 24 楼 cnmb1 的回复:
lz确定代码里手动加载hibernate配置的地方只有一处吗?

能告诉我,都什么地方可以加载hibernate配置吗?

#27


忘了  随便哪都可以,只要保证只加载一次。

#28


对了 你是项目启动时报错还是运行时报错?

#29


引用 28 楼 cnmb1 的回复:
对了 你是项目启动时报错还是运行时报错?

运行的时候,启动挺正常的,就是系统登录的时候,要验证员工信息,这时候就出错了。

#30


加载hibernate配置的代码只能运行一次哦,第二次运行就报你的错了

#31


该回复于2010-10-20 10:43:54被版主删除

#32


引用 11 楼 s0s0s0s 的回复:
重建一个同样的项目,把内容一点点的往里加,直到出错。

哎,只能按照你的方法做了。。。

#33


应该是 *.hbm.xml的文件头写的有问题,我以前也遇到过,看上去写的没问题,但是就是报错,我是把其他项目里的*.hbm.xml的文件头粘过来的,就ok了,你试一下。

#34


引用 29 楼 youqibing01 的回复:
运行的时候,启动挺正常的,就是系统登录的时候,要验证员工信息,这时候就出错了。


运行时报错,还以为是启动时报错呢!
那你debug跟踪一下呗!

#35


hibernate org.hibernate.DuplicateMappingExceptio

这不是写的很明白了吗?重复的映射异常

#36


引用 33 楼 shuipinglp 的回复:
应该是 *.hbm.xml的文件头写的有问题,我以前也遇到过,看上去写的没问题,但是就是报错,我是把其他项目里的*.hbm.xml的文件头粘过来的,就ok了,你试一下。

不应该吧,*.hbm.xml都是eclipse自动生成的,而且我在网上也看到了说是头文件的问题可能会导致这个异常,但是我的头文件是没有问题的。。。

#37


刚才忘了说了,又发现新情况,这个异常有时候报,有时候不报,我昨天把系统恢复到历史版本,开始运行挺好的,今天早上来了,我有启动系统,天啊,还是报那个异常,后来启动了好几次,现在又不报异常了,晕啊。。。

#38


问题貌似解决了,我在HibernateSessionFactory中写了静态块用于加载hibernate.cfg.xml和创建SessionFactory,可是不只为什么创建没有成功,当DAO getSession的时候,HibernateSessionFactory又重新加载了hibernate.cfg.xml并创建SessionFactory,但是只到加载了hibernate.cfg.xml就报错了。可为什么静态块中的SessionFactory没有创建成功呢?
HibernateSessionFactory源码:
package com.shangjia.manage.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

/**
 * Configures and provides access to Hibernate sessions, tied to the
 * current thread of execution.  Follows the Thread Local Session
 * pattern, see {@link http://hibernate.org/42.html }.
 */
public class HibernateSessionFactory {

    /** 
     * Location of hibernate.cfg.xml file.
     * Location should be on the classpath as Hibernate uses  
     * #resourceAsStream style lookup for its configuration file. 
     * The default classpath location of the hibernate config file is 
     * in the default package. Use #setConfigFile() to update 
     * the location of the configuration file for the current session.   
     */
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal threadLocal = new ThreadLocal();
    private  static Configuration configuration = new Configuration();    
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;

// static {
//     try {
// configuration.configure(configFile);
// sessionFactory = configuration.configure().buildSessionFactory();
// } catch (Exception e) {
// System.err
// .println("%%%% Error Creating SessionFactory %%%%");
// e.printStackTrace();
// }
//    }
    private HibernateSessionFactory() {
    }

/**
     * Returns the ThreadLocal Session instance.  Lazy initialize
     * the SessionFactory if needed.
     *
     *  @return Session
     *  @throws HibernateException
     */
    public static Session getSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}

        return session;
    }

/**
     *  Rebuild hibernate session factory
     *
     */
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}

/**
     *  Close the single hibernate session instance.
     *
     *  @throws HibernateException
     */
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);

        if (session != null) {
            session.close();
        }
    }

/**
     *  return session factory
     *
     */
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}

/**
     *  return session factory
     *
     * session factory will be rebuilded in the next call
     */
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}

/**
     *  return hibernate configuration
     *
     */
public static Configuration getConfiguration() {
return configuration;
}

}

#39


该回复于2010-10-21 08:55:55被版主删除

#40


在一年后的今天,我也遇到了这个问题,你的问题和我遇到的应该是一样的问题,我是问我们项目组的高手解决的,看到这个帖子,很多人都没能给出答案,我给出下面的答案,不知准不准确,反正我是解决了的,参考参考


背景:
1、已经重复使用多种办法检查过配置文件 .hbm.xml 等,并未发现有重复的配置。
2、部署方式:在 myeclipse 中使用 tomcat 部署项目
3、已清空 tomcat 缓存
4、已使用 myeclipse 重新编译,重新部署
5、已关闭其他无关项目
6、是在启动过程中报的错

现在已经是确定没有重复映射,不是缓存影响的了,还是不能正确启动。

最后经过多人尝试,找出了出错的原因:
使用 tomcat 直接部署可能会出现错误,部署 myeclipse 中的项目可以按一下方式部署:
在 %Tomcat_HOME%\conf\catalina\localhost 目录下新建以项目名为文件名的文件如:itsmsaas.xml
---------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------

#41


hibernate.cfg.xml里的重复了??ctrl+F确认一下噜。。

推荐阅读
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在Java程序设计中,实现高效的分页功能是提升应用性能的关键之一。本文介绍了通过使用 `PageController` 类来处理大数据集的分页操作,该类能够从一个较大的集合中提取出指定大小的小集合。具体实现中,通过优化数据访问和减少内存消耗,确保了分页操作的高效性和稳定性。此外,文章还探讨了分页算法的优化策略,包括缓存机制和懒加载技术的应用,以进一步提高系统的响应速度和用户体验。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本文详细介绍了在 Android 7.1 系统中调整屏幕分辨率和默认音量设置的方法。针对系统默认音量过大的问题,提供了具体的步骤来降低系统、铃声、媒体和闹钟的默认音量,以提升用户体验。此外,还涵盖了如何通过系统设置或使用第三方工具来优化屏幕分辨率,确保设备显示效果更加清晰和流畅。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
author-avatar
just路人周
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有