




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.mons.collections.SequencedHashMaps signer information does not match signer information of other classes in the same package 这是由于struts提供的commons-beanutils.jar和 hibernate提供的commons-collections.jar冲突成的, 可以从spring提供的lib中找到这个两个jar2.java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode用hql 时,忘了给表名加别名,如select p from Position,应该是select p from Position p3.The Server didn t send back a proper XML response用FCKEditor时原因:解析不了xml文件解决方法:情况一:web.xml的配置是否正确,具体查看FCKEditor使用指南.pdf,还有fckeditor自带的几个jar包情况二:加入serializer.jar,xalan.jar情况三:把项目下的fckeditor包删了,重新加入一遍4.org.eclipse.swt.SWTError: No more handles Unknown Mozilla path (MOZILLA_FIVE_HOME not set)SWTError:没有更多的处理未知Mozilla的路径(MOZILLA_FIVE_HOME未设置)环境:linux下运行swt程序(我出现此问题是,在linux下嵌套浏览器)原因:firefox版本不一致解决:重装一个firefox,并设置相关变量5.Exception in thread main org.eclipse.swt.SWTError: No more handles Could not detect registered XULRunner to use环境:用XULRunner 在java application中嵌套浏览器原因:没有注册XULRunner解决:window下环境中,在程序中加入,如(第二个参数是下载解压后的存放路径): static System.setProperty(org.eclipse.swt.browser.XULRunnerPath, C:xulrunner); 6.Exception in thread main java.lang.UnsatisfiedLinkError: no swt-win32-3536 or swt-win32 in swt.library.path, java.library.path or the jar file环境:用DJ Natvie Swing时,在java application中嵌套浏览器,且在windows环境下运行正常, 但在linux下却包此异常原因:windows下与linux下使用的swt jar包不一样解决:在windows下用swt-3.5M6-win32-win32-x86.jar,在linux下用swt-3.5.1-gtk-linux-x86.jar7.Exception in thread main .ProtocolException:cannot write to a URLConnection if doOutput=false - call setDoOutput(true)环境: 用URLConnection送某url发送数据时原因: doOutput=false时,不能发送数据解决: 如 urlConnection.setDoOutput(true)8..SocketException: Connection resetat .SocketInputStream.read(SocketInputStream.java:168)at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)at java.io.InputStreamReader.read(InputStreamReader.java:167)at java.io.BufferedReader.fill(BufferedReader.java:136)at java.io.BufferedReader.readLine(BufferedReader.java:299)at java.io.BufferedReader.readLine(BufferedReader.java:362)at com.eagle.service.AutoUpdate.run(AutoUpdate.java:43)环境:j2se socket编程时,服务器端报错原因1:服务器端用BufferedReader,时,没有读到一行解决:客户端用PrintWriter, pw.println(),不能用pw.print(),因为br.readLine()是读一行环境:j2se socket编程时,服务器端/客户端在br.readLine()时报错原因2:服务器端用BufferedReader,br.readLine()时,客户端/服务器已经退出,但是并未通过服务器/客户端, 即服务器端/客户端的socket还没有关闭,当用br.readLine()时就会出现这种情况解决:在关闭客户端时要socket.close(),同时还要向服务器发送一条退出的信息,这样让服务器知道某个客户端已经关闭,它就可以终止对此客户端的线程了,反之服务器也是一样9.org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of XXX.User环境:hibernate原因:oolean类型的值为null,boolean类型的值必须是true/false解决:save or update时给boolean类型的值赋true/false10.用占位符查询时出现空指针java.lang.NullPointerExceptionat org.hibernate.hql.ast.ParameterTranslationsImpl.getNamedParameterExpectedType(ParameterTranslationsImpl.java:63)at org.hibernate.engine.query.HQLQueryPlan.buildParameterMetadata(HQLQueryPlan.java:245)at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:95)at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:54)at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)at .struts.action.LoginAction.execute(LoginAction.java:72)at org.apache.struts.action.RequestPcessActionPerform(RequestProcessor.java:419)at org.apache.struts.action.RequestPcess(RequestProcessor.java:224)at org.apache.struts.action.ActionScess(ActionServlet.java:1194)at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:252)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at org.apache.coyote.http11.Http11Pcess(Http11Processor.java:869)at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHcessConnection(Http11BaseProtocol.java:664)at .PoolTcpEcessSocket(PoolTcpEndpoint.java:527)at .LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)at java.lang.Thread.run(Thread.java:595)环境:hibernate原因:HQL 不能解析解决: 错误写法:String hql = select m from com.eagle.oa.model.Message m where m.ids like: id; 正确写法:String hql = select m from com.eagle.oa.model.Message m where m.ids like:id;11.java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!原因:在使用hibernate的session.createQuery(.)时设置参数的下标应该从0开始解决:如: return session.createQuery(from User u where u.userName = ? and password = ?) .setParameter(0, name) .setParameter(1, password).uniqueResult();12.org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.wxj.entities.Group环境:hibernate原因:某个实例的属性一个对象,这个对象没有保存,还是暂态的对象解决:先保存这个对象,或是在另一端加inverse = true13.ORA-01461: can bind a LONG value only for insert into a LONG column环境:oracle原因:jar冲突解决:换成classes12.jar包即可14.ERROR LazyInitializationException:19 - could not initialize proxy - the owning Session was closed环境:SSH原因:当一个类或属性设置了lazy=true,操作对象时,session已经关闭了解决:使用Spring的过滤器openSessionInV.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove readOnly marker from transaction definition.环境:SSH原因:这个异常产生的主要原因是DAO采用了Spring容器的事务管理策略,如果操作方法的名称和事务策略中指定的被管理的名称不能够匹配上,spring 就会采取默认的事务管理策略(PROPAGATION_REQUIRED,read only).如果是插入和修改操作,就不被允许的,所以包这个异常解决:修改spring配置文件中相关事务管理部分16.mon.beans.ProbeException: There is no READABLE property named eid in class com.wxj.entity.Student环境:ibatis原因:在给对象做操作,设置参数时,指定的参数不是对象中有的属性,就会抛出此异常解决:核对对象的属性17.java.lang.OutOfMemoryError: PermGen space 环境:很多,如ssh整合时原因:不断的更新class,造成应用重启,最终造成代码区的内存空间满了解决:方法很多,1重启,2增加代码区的大小,3少更新class,4有时可能是log4j造成的问题,建议使用common-loggin.jar 5,优化代码以下来自CSDN的jinhuiyu: 在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息,可以用如下方法解决(根据你的实际情况设置大小),但是这只是临时的解决方法,更重要的是改造你的CODE 1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m 2,如果用的tomcat,在windows下,可以在C:tomcat5.5.9bincatalina.bat 中加上: set JAVA_OPTS=-Xms64m -Xmx256m 位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适. 3.如果是linux系统 Linux 在tomcat_home/bin/catalina.sh的前面,加 set JAVA_OPTS=-Xms64 -Xmx51218.在客户端使用dwr时,即跨域访问时,出现“拒绝访问“及“找不到某个属性”的问题(在服务器端调用时却正常)环境:在客户端使用dwr原因:1。可能是jar包 2。在web.xml中的配置问题解决:1。换dwr2.0.rc1 2。在web.xml中加入: DWR Servlet dwr-invoker org.directwebremoting.servlet.DwrServlet debug true allowGetForSafariButMakeForgeryEasier true !- crossDomainSessionSecurity false - dwr-invoker /dwr/* 19.Fault - ; nested exception is:java.lang.RuntimeException: No compiler found in your classpath! (you may need to add tools.jar)环境:axis原因:环境变量CLASSPATH没有设置好解决: 方法一 重设CLASSPATH 方法二 1。 将C:Program Filesjavajdk1.5.0_06lib 下的tools.jar拷贝到Tomcat的lib 下 2。 将axislib下的所有jar包都添加到classpath中,否则编译自己的应用程序时会报找不到包的错误!20.java.lang.UnsupportedClassVersionError: Bad version number in .class file环境:原因:Tomcat运行的JDK版本与application运行的JDK版本不一致解决: 1.Window - Preferences -Java - compiler中的compiler compliance level对应的下拉菜单中选择JDK版本. 2.Window - Preferences -MyEclipse - Servers -Tomcat - Tomcat n.x -JDK中的Tomcat JDK name下的下拉菜单中选择自己电脑上安装的JDK版本(必须与步骤1中的JDK版本一致). 如果还是没有解决,因为有些MyEclipse版本自带有JDK版本,所以也要将它改过来. 3.Window - Preferences -Java -Installed JRES,然后在右边选择与步骤1和2版本一致的JDK版本,如果没有,可以自己添加.然后选中就可以了.21.faultCode: /soap/envelope/Server.generalException faultDetail: /axis/stackTrace:No client transport named null found!环境:axis原因:没有设置服务的地址解决:call.setTargetEndpointAddress(new URL(http:/.);22.javascript window.onload 在IE中出现尚未实现解决:使用匿名函数,如 window.onload = function().;23.java.lang.IllegalArgumentException: argument type mismatch环境:struts1.2上传文件原因:第一种情况:中没有加入 method=post enctype=multipart/form-data 第二咱情况:数据类型不一样解决:第一种情况:在中加入 method=post enctype=multipart/form-data 第二种情况:重新数据类型,如: 实体类(news)中:private byte updloadFile; hbm.xml映射: ActionForm:private FormFile uploadFile 页面表单: Action:user.setUploadFile(userActionForm.getUploadFile().getFileData();24.Dont know how to iterate over supplied items in <forEach>如:其中types不是一个可迭代的对象25.org.springframework.beans.factory.BeanDefinitionStoreException: Line 5 in XML document from ServletContext resource /WEB-INF/applicationContext.xml is invalid; nested exception is org.xml.sax.SAXParseException: Document root element beans, must match DOCTYPE root null.环境:spring原因:spring 版本与其配置文件中的schema不一致解决:换jar包或schema,如:换成:26.The archive: C:/Program Files/MyEclipse 6.5/eclipse/configuration/org.eclipse.osgi/bundles/290/1/.cp/lib/wsdl4j-1.5.1.jar which is referenced by the classpath, does not exist.环境:在myeclipse中run application或run junit时,突然弹出一个对话框,内容如题。而且项目上会有一个小红X原因:myeclipse引用的某jar包不在classpath中解决:按照提示的路径将jar包加进去,如果某文件夹不存在就新建一个,以.开头的文件夹不能直接新建,而应该使用cmd来创建,加进去之后,刷新项目,项目的小红X消除之后即可运行了27..ConnectException: Connection timed out: connect环境:根据wsdl通过myeclipse来创建axis webservice客户端原因:请求的地址错误解决:在XXLocator.java文件中,找到XXHttpPort_address属性,更改它的请求地址就行了如:private java.lang.String xfireserviceHttpPort_address = http:/localhost:9999/xfireserver/services/xfireservice;28:org.codehaus.xfire.fault.XFireFault: There must be a method name element.at org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:32)at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)at org.codehaus.xfire.client.Client.onReceive(Client.java:406)at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)at org.codehaus.xfire.client.Client.invoke(Client.java:336)at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)at $Proxy8.refund(Unknown Source)Q2.6我在java xxx的时候显示“Exception in thread main java.lang.NoSuchMethodError: main”。答:首先,在你的程序中每个java文件有且只能有一个public类,这个类的类名必须和文件名的大小写完全一样。其次,在你要运行的类中有且只能有一个public static void main(String args)方法,这个方法就是你的主程序。Q2.7在java xxx的时候显示“Exception in thread main java.lang.NullPointerException”。答:在程序中你试图在值为null的对象变量上调用方法,请检查你的程序确保你的对象被恰当的初始化。参见Q4.8以了解java中的异常机制。Q2.8 package是什么意思?怎么用?答:为了唯一标识每个类并分组,java使用了package的概念。每个类都有一个全名,例如String的全名是java.lang.String,其中java.lang是包名,String是短名。按照java命名惯例,包名是全部小写的,而类名的第一个字母是大写的。这样,如果你自行定义了同样名字的类String,你可以把它放在mypackage中,通过使用全名mypackage.String和java.lang.String来区分这两个类。同时,将逻辑上相关的类放在同一个包中,可以使程序结构更为清楚。为了定义包,你要做的就是在java文件开头加一行“package mypackage;”。注意包没有嵌套或包含关系,mypackage包和mypackage.mysubpackage包对JRE来说是并列的两个包(虽然开发者可能暗示包含关系)。Q2.9 我没有声明任何package会怎么样?答:你的类被认为放在默认包中。这时全名和短名是一致的。Q2.10 在一个类中怎么使用其他类?答:如果你使用java.lang包或者默认包中的类,不用做任何事。如果你的类位于mypackage包中,并且要调用同一包中的其他类,也不用做任何事。如果你使用其他包中的类,在package声明之后,类声明之前使用import otherpackage1.Class1; 或 import otherpackage2.*;这里.*表示引入这个包中的所有类。然后在程序中你可以使用其他类的短名。如果短名间有重名冲突,必须使用全名来区分。注意在使用其他包中的类时,你只能使用public的类和接口,参见Q5.4。Q2.11 我用了package的时候显示NoClassDefFoundError,但是我把所有package去掉的时候能正常运行。答:将你的java文件按包名组织存放。比如你的工作目录是/work,你的类是package1.Class1,那么将它存放为/work/package1/Class1.java。如果没有声明包,那么直接放在/work下。在/work下执行javac package1/class1.java,再执行java package1.class1,你会发现一切正常。另外,如果你的类的个数已经多到了你需要使用包来组织的话,你可以考虑开始使用IDE。Q2.12 我想把java编译成exe文件,该怎么做?答:JDK只能将java源文件编译为class文件。class文件是一种跨平台的字节码,必须依赖平台相关的JRE来运行。Java以此来实现跨平台性。有些开发工具可以将java文件编译为exe文件。作者反对这种做法,因为这样就取消了跨平台性。如果你确信你的软件只在Windows平台上运行,你可以考虑使用C+/C#来编程。Q2.13 我在编译的时候遇到什么deprecated API,是什么意思?答:所谓deprecated是指已经过时,但是为了向前兼容起见仍然保留的方法。这些方法可能会在以后取消支持。你应当改用较新的方法。在API里面会说明你应当用什么方法来代替之。三、I/O篇Q3.1 我怎么给java程序加启动参数,就像dir /p/w那样?答:还记得public static void main(String args)吗?这里的args就是你的启动参数。在运行时你输入java package1.class1 arg1 arg2,args中就会有两个String,第一个是arg1,第二个是arg2。Q3.2 我怎么从键盘输入一个int/double/字符串?答:java的I/O操作比C+要复杂一点。如果要从键盘输入,样例代码如下:BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );String s = cin.readLine();这样你就获得了一个字符串,如果你需要数字的话再使用:int n = Integer.parseInt( s ); 或者 double d = Double.parseDouble( s );来将字符串534转换成int或double。Q3.3 我怎么输出一个int/double/字符串?答:使用System.out.println(n)或者System.out.println(Hello)等等。Q3.4 我发现有些书上直接用System.in输入,比你要简单得多。答:java使用unicode,是双字节。而System.in是单字节的stream。如果你要输入双字节文字比如中文,请使用作者的做法。 Q3.5 我怎么从文件输入/输出一个int/double/字符串?答:类似于从键盘输入,只不过换成BufferedReader fin = new BufferedReader( new FileReader( myFileName ) );PrintWriter fout = new PrintWriter( new FileWriter( myFileName ) );另外如果你还没下载API,请开始下载并阅读java.io包中的内容。Q3.6 我想读写文件的指定位置,该怎么办?答:java.io.RandomAccessFile可以满足你的需要。Q3.7 怎么判断要读的文件已经到了尽头?答:在Reader的read方法中明确说明返回-1表示流的结尾。四、 关键字篇Q4.1java里面怎么定义宏?答:java不支持宏,因为宏代换不能保证类型安全。如果你需要定义常量,可以将它定义为某个类的static final成员。参见Q4.2和Q4.6。Q4.2java里面没法用const。答:你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次赋值。唯一的例外是所谓blank final,如下例所示:public class MyClass1 private final int a = 3; private final int b; / blank final public MyClass1() a = 5; / 不合法,final变量不能被再次赋值。 b = 4; / 合法,这是b第一次被赋值。 b = 6; / 不合法,b不能被再次赋值。 final也可以用于声明方法或类,被声明为final的方法或类不能被继承。注意const是java的保留字以备扩充。Q4.3java里面也不能用goto。答:甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。如果你需要从多层循环中迅速跳出,java增强了(和C+相比)break和continue的功能,支持label。例如:outer : while( . ) inner : for( . ) . break inner; . . continue outer; . 和const一样,goto也是java的保留字以备扩充。Q4.4java里面能不能重载操作符?答:不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现类似功能。Q4.5我new了一个对象,但是没法delete掉它。答:java有自动内存回收机制,即所谓Garbarge Collection。你不需要删除对象。你再也不用担心指针错误,内存溢出了。Q4.6我想知道为什么main方法必须被声明为public static?为什么在main方法中不能调用非static成员?答:声明为public是为了这个方法可以被外部调用,详情见Q5.4。static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。你不需要创建一个对象就可以直接使用这个类的static成员,因而在static成员中不能调用非static成员,因为后者是关联到对象实例(instance)的。在A类中调用B类的static成员可以使用B.staticMember的写法。注意一个类的static成员变量是唯一的,被所有该类对象所共享的,在多线程程序设计中尤其要谨慎小心。类的static成员是在类第一次被JRE装载的时候初始化的。你可以使用如下方法来使用非static成员:public class A private void someMethod() /非static成员 public static void main(String args) A a = new A();/创建一个对象实例 a.someMethod();/现在你可以使用非static方法了 Q4.7throw和throws有什么不同?答:throws用于方法声明中,声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的动作。如果你在方法中throw一个异常,却没有在方法声明中声明之,编译器会报错。注意Error和RuntimeException的子类是例外,无需特别声明。Q4.8什么是异常?答:异常最早在Ada语言中引入,用于在程序中动态处理错误并恢复。你可以在方法中拦截底层异常并处理之,也可以抛给更高层的模块去处理。你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下: try ./以下是可能发生异常的代码 . /异常被你或低层API抛出,执行流程中断并转向拦截代码。 . catch(Exception1 e) /如果Exception1是Exception2的子类并要做特别处理,应排在前面/发生Exception
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双腔起搏器护理
- 证券人员工作总结
- 走进长白山课件
- 资阳市长发安全培训课件
- 2023年度工程硕士考前冲刺试卷及答案详解(有一套)
- 粮油食品检验人员预测复习含答案详解(能力提升)
- 饲料行业安全生产培训会课件
- 饲料知识培训课件
- 2024-2025学年度教师资格真题含答案详解【新】
- 饲料喂养知识培训课件
- 建筑施工项目管理平台使用指南
- 全球低空经济2025年技术规范与实施白皮书
- 水泵房巡检流程培训课件
- 东海证券面试题及答案
- 基本药物制度补助资金管理办法
- 2025年建筑工地安全培训考试题库试题及答案
- 2025年陕建集团资料员考试题库
- 2025江西赣州市财政投资运营有限公司招聘笔试历年参考题库附带答案详解
- 2025年人教版新教材数学二年级上册教学计划(含进度表)
- 《雅马哈MG166 调音台使用说明书》
- 2024-2025学年深圳北师大版八年级下学期期末数学复习题《平行四边形》解答题含答案
评论
0/150
提交评论