GVKun编程网logo

部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException

41

如果您对部署到Apache7.0.54和Java8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException感兴趣,那么这篇文章一定是您不可错过的。我

如果您对部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException的各种细节,此外还有关于 java.lang.IllegalArgumentException、### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String ### Cause: java.lang.IllegalArgumentException: ...、android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException、android – getPlaceByID()总是失败,出现java.lang.IllegalArgumentException:缓冲区已关闭的实用技巧。

本文目录一览:

部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException

部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException

环境:应用服务器:Apache 7.0.54 Java:“ 1.8.0_05”操作系统:Mac OS X 10.9.3

库:Spring 3.2 REST应用程序

以下是我在部署期间收到的错误:

localhost.2014.06.09.logJun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext logINFO: No Spring WebApplicationInitializer types detected on classpathJun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext logINFO: Initializing Spring root WebApplicationContextJun 09, 2014 3:37:47 PM org.apache.catalina.core.StandardContext listenerStartSEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerjava.lang.IllegalArgumentException    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.asm.ClassReader.<init>(Unknown Source)    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at java.lang.Thread.run(Thread.java:745)

答案1

小编典典

您需要升级到Spring 4版本以支持Java 1.8字节代码格式

 java.lang.IllegalArgumentException

java.lang.IllegalArgumentException

  问题描述:java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class cn.etouch.ecalendar.waterfallview.StaggeredGridView$GridListSavedState instead. This usually happens when two views of different type have the same id in the same hierarchy. This view''s id is id/lv. Make sure other views do not use the same id.

问题出现情况分析:

android 5.0及以下版本如果出现这个问题,不要以为真的是id重复了。

我的项目情况是这样的在一个activity中有四个fagment ,F1,F2,F3,F4,在F2和F3的切换过程中,F4其实也已经初始化了,我在F4的布局中使用了自定义了一个ListView,它的id为lv.

之所以报错说id相同,大约是F4的上一次状态被保留下来了。

问题解决方案:

自定义的Listview的方法重写

   @Override
    protected void onRestoreInstanceState(Parcelable state) {
            super.onRestoreInstanceState(state); }

      修改为:

        @Override
    protected void onRestoreInstanceState(Parcelable state) {
        try {
            super.onRestoreInstanceState(state);
        }catch (Exception e) {}
        state=null;
      }
 

 

### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String ### Cause: java.lang.IllegalArgumentException: ...

### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String ### Cause: java.lang.IllegalArgumentException: ...

### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String] with root cause
java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String
at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:92)
at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:142)
at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:794)
at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:53)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:494)
......

  在MVC开发中习惯使用原有的类作为传参方式:

  javaBean:

  

分享图片

 

 

   该javaBean上建立扩展类:

   

分享图片

 

 

    数据库中,blog表和blogType表存在外键关系,所以在blog类的实现上,要建立一个blogType的类做属性。

   在该查询中,显示的异常信息可知,invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String,不能比较(blogType和String)

分享图片

 

   sql语句的拼接中,判断该类是否为空就行了,我就照着前面的一路CV,从而忽略了这个错误(根本是没注意到这样的问题)。

  所以这里要注意啊:代码套路深,CV需谨慎啊。CV自己的代码都能坑死自己啊。

  日常报错ing,吸取更多的教训,写出更优雅的代码,同时希望能帮助到同是坎坷路上的码友们。

android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException

android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException

在使用GLSurfaceView启动某些活动期间尝试快速按下后退按钮时,eglCreateWindowSurface会因 java.lang.IllegalArgumentException而失败.

我收到以下错误:

10-08 18:05:36.490: E/GLSurfaceView(3440): eglCreateWindowSurface
10-08 18:05:36.490: E/GLSurfaceView(3440): java.lang.IllegalArgumentException: Make sure the SurfaceView or associated SurfaceHolder has a valid Surface
10-08 18:05:36.490: E/GLSurfaceView(3440): at com.google.android.gles_jni.EGLImpl._eglCreateWindowSurface(Native Method)
10-08 18:05:36.490: E/GLSurfaceView(3440): at com.google.android.gles_jni.EGLImpl.eglCreateWindowSurface(EGLImpl.java:90)
10-08 18:05:36.490: E/GLSurfaceView(3440): at android.opengl.GLSurfaceView$DefaultwindowSurfaceFactory.createWindowSurface(GLSurfaceView.java:798)
10-08 18:05:36.490: E/GLSurfaceView(3440): at android.opengl.GLSurfaceView$EglHelper.createSurface(GLSurfaceView.java:1065)
10-08 18:05:36.490: E/GLSurfaceView(3440): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1433)
10-08 18:05:36.490: E/GLSurfaceView(3440): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)

这些活动未在SurfaceHolder.Callback.surfaceCreated之前或SurfaceHolder.Callback.surfaceDestroyed之后调用GL操作.

有没有其他人遇到这个问题,解决方案是什么?

谢谢你的任何进步.

解决方法

在多个活动之间切换快速撕裂窗口表面.

我修补了GLSurfaceView.guardedRun()以避免GLSurfaceView的竞争条件

从:

if (createEglSurface) {
                    if (LOG_SURFACE) {
                        Log.w("GLThread","egl createSurface");
                    }
                    gl = (GL10) mEglHelper.createSurface(getHolder());
                    if (gl == null) {
                        // Couldn't create a surface. Quit quietly.
                        break;
                    }
                    sGLThreadManager.checkGLDriver(gl);
                    createEglSurface = false;
                }

至:

if (createEglSurface) {
                    if (LOG_SURFACE) {
                        Log.w("GLThread","egl createSurface");
                    }
                    gl = (GL10) mEglHelper.createSurface(getHolder());
                    if (gl == null) {
                        // If we escape,GLThread ends up. Don't escape.
                        continue;
                    }
                    sGLThreadManager.checkGLDriver(gl);
                    createEglSurface = false;
                }

它看起来像这个问题是fixed in JellyBean.

android – getPlaceByID()总是失败,出现java.lang.IllegalArgumentException:缓冲区已关闭

android – getPlaceByID()总是失败,出现java.lang.IllegalArgumentException:缓冲区已关闭

我正在使用Google Places API,我需要使用地方ID检索地方详情.我正在尝试调用方法getPlaceById(),但它总是失败.这是日志:

java.lang.IllegalArgumentException: Buffer is closed.
at com.google.android.gms.common.data.DataHolder.zzg(UnkNown Source)
at com.google.android.gms.common.data.DataHolder.zzi(UnkNown Source)
at com.google.android.gms.common.data.zzc.zzcB(UnkNown Source)
at com.google.android.gms.location.places.internal.zzt.zzG(UnkNown Source)
at com.google.android.gms.location.places.internal.zzb.getPlaceId(UnkNown Source)
at .onPredictionSelected(CreateLocationActivity.java:181)
at .AutocompletePredictionsHelper.onItemClick(AutocompletePredictionsHelper.java:51)
at android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:905)
at android.widget.AutoCompleteTextView.access$400(AutoCompleteTextView.java:90)
at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1195)
at android.widget.AdapterView.performItemClick(AdapterView.java:300)
at android.widget.AbsListView.performItemClick(AbsListView.java:1247)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3215)
at android.widget.AbsListView$3.run(AbsListView.java:4009)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5696)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

我的代码:

public void onPredictionSelected(AutocompletePrediction prediction) {
    if (!googleapiclient.isConnected()) return;
    PendingResult<PlaceBuffer> result =
            Places.GeoDataApi.getPlaceById(googleapiclient,prediction.getPlaceId());
    result.setResultCallback(places -> {
        if (places.getCount() > 0)
            place = places.get(0);
        places.release();
    });
}

这很奇怪,因为Google Places API已正确连接.
这种例外可能的原因是什么?

解决方法

如果要在释放缓冲区后继续使用缓冲区中包含的对象,请在调用release()之前调用对象上的freeze()

You can use isDataValid() at any time to determine if the object is available or not. For example,place.isDataValid() returns true before the call to buffer.release() and false afterwards. Note that frozen.isDataValid() returns true both before and after the buffer has been released.

参考https://developers.google.com/places/android-api/buffers

我们今天的关于部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,并出现java.lang.IllegalArgumentException的分享已经告一段落,感谢您的关注,如果您想了解更多关于 java.lang.IllegalArgumentException、### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String ### Cause: java.lang.IllegalArgumentException: ...、android – eglCreateWindowSurface失败,出现java.lang.IllegalArgumentException、android – getPlaceByID()总是失败,出现java.lang.IllegalArgumentException:缓冲区已关闭的相关信息,请在本站查询。

本文标签: