ssh框架整合-NoClassDefFoundError-NoSuchMethodError-遁地龙卷风
- 格式:docx
- 大小:68.49 KB
- 文档页数:2
spring+hiberna te出错小结:(1)ng.NoClass DefFou ndErro r: org/hiberna te/context/Current Sessio nConte xt原因:出现这错误时,请更改hibe rnate的包,更新至最新或3.1以上(2)ng.NoClass DefFou ndErro r: javax/transac tion/Transac tionMa nager原因:缺少jta.jar 或者是找不到h bm.xml文件导致sessio nfacto ry出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Excepti on in thread"main" org.hiberna te.excepti on.SQLGram marExc eption: Could not execute JDBC batch update或者org.springf ramewo rk.jdbc.BadSqlG rammar Except ion: Hiberna te operati on: could not insert: [com.yourcom pany.model.Login]; bad SQL grammar [insertinto mysql__login(name, passwor d) values(?,?)]; nestedexcepti on is java.sql.SQLExce ption:Table 'mysql.mysql__login'doesn't exist java.sql.SQLExce ption: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hiber nate Tools(或者Eclip se本身的D atabas e Explore r)生成*.hbn.xml工具中包含有cata log="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springf ramewo rk.orm.hiberna te3.Hiberna teQuer yExcep tion: undefin ed alias原因:在spring配置文件中,可能你设置了<prop key="hiberna te.query.factory_class"> org.hiberna te.hql.classic.Classic QueryT ransla torFac tory</prop>,指定了HQL的解释器,请删除或更改另一个解释器o rg.hiberna te.hql.ast.ASTQuer yTrans latorF actory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
SSH框架整合步骤详解SSH框架 2009-04-09 10:47:00 阅读611 评论0 字号:大中小订阅更系统地学习Struts1.x/Struts2.x+Hibernate+Spring,请学习该开源项目Appfuse终于,终于将SSH整合成功了,弄了几个小时,可以休息了(有的朋友弄了半个月,甚至重装了系统也没弄好,哎,庆幸啊)。
碰到问题千万不要放弃,要相信没有解决不了的问题!项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory 是多余的。
相关的配置文件、类文件详细信息,请参看Struts+Spring+Hibernate/SSH整合开发详细二以前是整过这三个框架的,可是工作期间都不曾用过,不知不觉之中,学的东西全忘了。
这次又要开始找工作了,看着招聘启事上都写着:要求熟练掌握Struts,Hibernate或Spring框架……,没得办法,重新学呗。
Spring in Action中文版下载地址(ftp协议)ftp://222.214.218.61/book5/20080228/cf8b35cc-5bcd-497 3-b6b7-37ae3ec78391.rar如果无法下载,可以在里重新搜索首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6.0框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01>添加过程:<1> 新建项目。
Package Explorer视图下,右键单击 New -> Web Project;<2> 添加Struts框架。
菜单栏MyEclipse -> Capabilities,或者右键单击新建的项目名,选择快捷菜单中的"MyEclipse"下的二级菜单;设置相关的包名后,请写一个Struts的小例子,用来测试Struts是否可用;<3> 添加Spring。
解决使用了maven的项目中的ng.NoClassDefFoundError本机环境:异常:**************************异常开始*****************************ng.NoClassDefFoundError:com/wiwoworld/newModelTest/service/UserServiceat ng.Class.getDeclaredMethods0(Native Method)at ng.Class.privateGetDeclaredMethods(Class.java:2427)at ng.Class.getDeclaredMethods(Class.java:1791)at org.junit.runners.model.TestClass.<init>(TestClass.java:38)at org.junit.runners.ParentRunner.<init>(ParentRunner.java:65)atorg.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:59)atorg.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit 4ClassRunner.java:103)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorA ccessorImpl.java:27)at ng.reflect.Constructor.newInstance(Constructor.java:513)atorg.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)atorg.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24 )atorg.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)atorg.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossi bilitiesBuilder.java:29)atorg.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:33)atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReferenc e.java:33)atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestMethodReference.<init>(JUnit4TestM ethodReference.java:25)atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.j ava:54)atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.ja va:38)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.j ava:452)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java: 390)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java :197)Caused by: ng.ClassNotFoundException:erServiceat .URLClassLoader$1.run(URLClassLoader.java:200)at java.security.AccessController.doPrivileged(Native Method)at .URLClassLoader.findClass(URLClassLoader.java:188)at ng.ClassLoader.loadClass(ClassLoader.java:307)at uncher$AppClassLoader.loadClass(Launcher.java:301)at ng.ClassLoader.loadClass(ClassLoader.java:252)at ng.ClassLoader.loadClassInternal(ClassLoader.java:320)... 26 more***************************问题解决开始***********************************这是由于java编译后的class文件没有指定正确引起的项目名称上【右击】--->【Properties】--->【Java Build Path】--->【Source】--->【看看报NoClassDeFoundError的类是哪一个源目录,并选中】--->【看下面的Default output folder】--->【发现不是target/classes】--->【Edit】不使用项目的默认编译输出文件夹,这里自己定义为target/classes【选择target/classes文件夹】已经将target/classes目录做为java编译输出的文件夹了---【OK】再一次运行程序,这个问题就已经解决了。
spring+hibernate出错小结:(1)ng.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext原因:出现这错误时,请更改hibernate的包,更新至最新或3.1以上(2)ng.NoClassDefFoundError: javax/transaction/TransactionManager原因:缺少jta.jar 或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name,password) values (?,?)]; nested exception is java.sql.SQLException: Table'mysql.mysql__login' doesn't exist java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml 工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springframework.orm.hibernate3.HibernateQueryException: undefined alias原因:在spring配置文件中,可能你设置了<prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>,指定了HQL的解释器,请删除或更改另一个解释器org.hibernate.hql.ast.ASTQueryTranslatorFactory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
下文列出的错误是网上博文引用的,并结合自己搭建的Strust2-Spring-Hibernate框架整合jasper报表时出现的错误完善。
我用的是ireport-4.1.3设计的模板(jrxml文件),开始时一直报各种错误ClassNotFound 之类的,网上搜了下说是jar不全,jar包版本不对。
根据网上说的下了各种jar包各种版本的,花了很多时间,下面1~9错误主要是jar不全,也有版本冲突。
首先,解决jar不全的问题,这里主要讲jasper结合J2EE时需要的jar包,也就是前提是原来的J2EEjar包齐全:上面是所需要的包,有的可能有累赘,不过没有关系,包的版本不用考虑,有一个简便的方法:由于我用过iReport软件,所以jar包的版本问题可以通过在iReport的安装目录下找,上述的jar都是我在iReport的安装目录下找到后复制到lib里的这样可以避免版本的问题,也省去了找jar包的麻烦。
1.spring+jasperReport生成PDF格式的报表时报ng.NoSuchMethodError: com.lowagie.text.pdf.PdfWriter.setRgbTransparencyBlending(Z)V异常原因:iText.jar文件过旧,将之改为2.1版就没事了。
ng.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException异常原因:没有导入groovy-all.jar 包,导入groovy-all.jar 包就可以了。
3. Excle 应用:ng.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCellStyle 出现上述错误提示加入poi-3.2-FINAL-20081019.jar.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : pdfFontName : STSong-LightpdfEncoding : UniGB-UCS2-HisPdfEmbedded : false出现上述错误提示加入iTextAsian.jarng.NoClassDefFoundError: org/apache/commons/digester/Digester出现上述错误提示加入commons-digester-1.7.jar 功能简述:解析xml文件;ng.NoClassDefFoundError: org/apache/commons/collections/ArrayStack出现上述错误提示加入commons-beanutils-1.7.jarng.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap出现上述错误提示加入commons-collections-2.1.jar8. ng.NoClassDefFoundError: com/lowagie/text/SplitCharacter(PDF)出现上述错误提示加入itext-1.3.1.jar9 ng.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCellStyle(Excel)出现上述错误提示加入poi-3.0-alpha3-20061212.jarng.VerifyError: (class:groovy/runtime/metaclass/java/util/HashMapMetaClass, method: super$2$invokeMethod signature:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang /Object;ZZ)依赖包json-lib.jar版本过低,iReport-3.7后要求json版本2.1以上。
解决Docker容器中SSH访问问题的方法与配置随着容器化技术的发展,Docker已经成为了一种非常流行和常用的容器化平台。
通过Docker,我们可以方便地创建、部署和管理容器。
然而,在使用Docker时,有时候我们可能会遇到SSH访问问题,即无法通过SSH连接到Docker容器。
本文将介绍一些解决Docker容器中SSH访问问题的方法和配置。
一、确保SSH服务已启动在使用SSH访问Docker容器之前,我们首先要确保容器内已经运行了SSH服务。
有两种常见的方法可以实现这一点。
1. 在Dockerfile中安装并启动SSH服务可以在Dockerfile中添加以下代码,以在构建镜像过程中安装并启动SSH服务。
```RUN apt-get update && apt-get install -y openssh-serverRUN echo 'root:password' | chpasswdRUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/'/etc/ssh/sshd_configRUN service ssh restart```上述代码通过apt-get命令安装openssh-server软件包,并将root用户的密码设置为"password"。
接下来,通过修改sshd_config文件中的配置来允许root用户登录,并最后重启SSH服务。
2. 在容器中手动启动SSH服务在已运行的容器中,我们可以通过以下命令来安装并启动SSH服务。
```apt-get updateapt-get install -y openssh-serverservice ssh restart```以上命令将在已运行的容器中安装openssh-server软件包,并重启SSH服务。
解决classNotFound的问题的思路⽤Ctrl+Shift+t可以查看class,对于报错信息,我们把没有找到的class放到查找框⾥进⾏查看,找到之后把这个jar包放到WEB-INF的lib⽬录下,build path⼀下就可以了。
以上是在java web项⽬中,没有使⽤maven的情况可以使⽤.如果使⽤maven,有时也会碰到这种情况,原因可能是jar包冲突,也可能是tomcat缓存,还可能是jar包放到了jre的ext⽬录.分情况处理.1 tomcat缓存问题,最笨的⽅法,eclipse中project-clean,然后再选build Automatically,删除server,也就是tomcat,然后重新启动eclipse,重新添加tomcat,向tomcat容器添加项⽬.2 jar包放到了jre的ext⽬录.由于classPath的加载顺序是1)BootstrapClassLoader(启动类加载器) 负责加载$JAVA_HOME中jre/lib/rt.jar⾥所有的class,加载System.getProperty(“sun.boot.class.path”)所指定的路径或jar。
2)ExtensionClassLoader(标准扩展类加载器) 负责加载java平台中扩展功能的⼀些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定⽬录下的jar包。
载System.getProperty(“java.ext.dirs”)所指定的路径或jar。
3)AppClassLoader(系统类加载器) 负责记载classpath中指定的jar包及⽬录中class4)CustomClassLoader(⾃定义加载器) 属于应⽤程序根据⾃⾝需要⾃定义的ClassLoader,如tomcat、jboss都会根据j2ee规范⾃⾏实现如果⼀个jar包放到jre的ext⽬录,则会第⼆顺序加载,它依赖的jar包只会从BootstrapClassLoader中查找,如果依赖后⾯的加载器,也会报错。
SSH项目部署在window和linux下的Weblogic上出现ClassNotFound异常解决办法问题:一个J2ee项目,部署在tomcat下可以,weblogic下就出现了各种蛋疼的问题。
前面第几篇博客来着,也提到了一个其它的异常,现在这次出现了ClassNotFound异常。
网上搜了很多资料,都没有解决。
以前的一个老同事给了一份weblogic部署的资料,那份资料文档是在window下的,说的是hibernate里面的antlr.jar与weblogic里面自带的jar包有冲突,修改域里面setDomainEnv.cmd 文件或者startWebLogic.cmd。
文档主要内容如下1.1 注意事项由于Weblogic和hibernate框架使用的包(antlr-2.7.6rc1.jar)有冲突,所以安装完毕之后,需要做些配置,解决冲突(此例的antlr包版本是2.7.6rc1):A) 将工程jar包中的antlr-2.7.6.jar复制到Weblogic的安装目录里,具体路径为D:\bea\wlserver_10.3\common\lib,然后重启服务即可B) 如果按照A步骤执行后,还不能解决冲突,则要到工程所在的域文件夹里,setDomainEnv.cmd的文件中修改服务的环境变量,把A步骤中的路径加上:右键-> 编辑,打开文件,在set CLASSPATH之前加上:set PRE_CLASSPATH=D:\bea\wlserver_10.3\common\lib\antlr-2.7.6.jar在set CLASSPATH之后加上:set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%然后重启服务即可window下,我尝试过,老同事的资料完全正确,项目可以正常跑起来。
但是在linux下的setDomainEnv.sh不一样,改配置都不知道如何该。
于是在网上找各种资料,修改setDomainEnv.sh 尝试过,修改startWeblogic.sh尝试过,都不行,后来找到资料,在项目的WEB-INF中新增一个weblogic.xml的配置文件,终于搞定了,内容如下,希望能帮到遇到该问题的朋友。
(-1)写在前面
spring2.0、struts1.2、hibernate3.0、myeclipse8.5、tomcat6.0,整合之中出
现了很多问题,前几天忙着整理毕业论文的资料,时间腾出来了,总算有能写的东西。
话说这宿舍的人少了,蚊子的选择也少了。
(0)详细解释
a.错误产生的原因
ng.NoSuchMethodError、 ng.NoClassDefFoundError,类似于这
种类型的错误是因为框架间jar包冲突了。
b.解决方式
已ng.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit为例,
是因为spring2.0和hibernate3.0都有asm这个jar包。
第一种:区发布项目的tomcat根目录下,进入webapps,进入你的项目,WEN-INF->lib下,找到asm.jar删掉即可。
第一次发布项目后,以后的项目发布时不
会跟新lib里的jar包
第二种:关闭服务器,去tomcat跟目录下的webapps里删除你的项目(否则即
便执行后续的行为,再次发布项目lib里的jar包也不会更新),
如果你的jar包在myeclipse中放在WEB-INF\lib下,找到后删除就好(我用的是build path,不是自己导的包,可能在spring 2.0 AOP libraries里),
如果你是用buildpath方式引用的jar包,点击myeclipse的Windows,
点击preference,左边依次点击MyEclipse->ProjectCapabilities->Spring,
在右边选择Spring2.0,下拉选框选择spring 2.0 AOP libraries(我的默认就是),
找到asm.jar(我这里是asm-2.2.3.jar),移除即可,然后重新启动服务器,发布
项目。
如下图所示:
(2)恢复移除的jar包
移除buildpath中的jar包是有隐患的,以前面移除的asm.jar为例,点击myeclipse的Windows,点击preference,左边依次点击MyEclipse-
>ProjectCapabilities->Spring,在右边选择Spring2.0,进入后随便点击一个jar包,点击Add JAR/ZIP,如果你发现地址栏出现\data\2.0\lib\aopalliance这样的片段,你一定想到了,lib目录下有spring2.0全部的jar,找到你想要的就可以了。