站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Eclipse 专题有没有人遇到这种异常:java.lang.IllegalStateException: Function is not supported?

有没有人遇到这种异常:java.lang.IllegalStateException: Function is not supported?

摘要: 有没有人遇到这种异常:java.lang.IllegalStateException: Function is not supported?


异常如下:
java.lang.IllegalStateException: Function is not supported
at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:66)
at org.lwjgl.opengl.GL14.glBlendColor(GL14.java:63)
at cn.edu.zju.AnoleGrid.RenderEngine.RenderEngine.init_opengl(RenderEngine.java:165)
at cn.edu.zju.AnoleGrid.RenderEngine.RenderEngine.initRenderEngine(RenderEngine.java:70)
at cn.edu.zju.AnoleGrid.Views.trying.testNewWay.initRenderEnviroment(testNewWay.java:105)
at cn.edu.zju.AnoleGrid.Views.trying.testNewWay.(testNewWay.java:76)
at cn.edu.zju.AnoleGrid.Views.LWJGLView.createPartControl(LWJGLView.java:22)
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:332)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:197)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:566)
at org.eclipse.ui.internal.WorkbenchPage$ActivationList.setActive(WorkbenchPage.java:3842)
at org.eclipse.ui.internal.WorkbenchPage.restoreState(WorkbenchPage.java:2871)
at org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.java:1932)
at org.eclipse.ui.internal.Workbench.doRestoreState(Workbench.java:2857)
at org.eclipse.ui.internal.Workbench.access$14(Workbench.java:2805)
at org.eclipse.ui.internal.Workbench$19.run(Workbench.java:1681)
at org.eclipse.ui.internal.Workbench.runStartupWithProgress(Workbench.java:1421)
at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1679)
at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:1650)
at org.eclipse.ui.internal.Workbench$17.run(Workbench.java:1529)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1473)
at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:183)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:702)
at org.eclipse.ui.internal.Workbench.init(Workbench.java:1085)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1847)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169)
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 org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
这该怎么办呢?我用lwjgl做的演示,可是3D界面总是出不来,有没有高人指点一下?



我顶!


无情接分,友情up!


我再顶


继续顶


在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。


补充一下,出错的代码如下:
private void init_opengl() {
GL11.glClearDepth(1.0f);
GL11.glClearColor(0f, 0f, 0f, 0f); // Black Background

GL11.glEnable(GL11.GL_DEPTH_TEST); // Enables Depth Testing // Need
GL11.glDepthFunc(GL11.GL_LEQUAL); // The Type Of Depth Testing To Do

GL11.glShadeModel(GL11.GL_FLAT); // Enable Smooth Shading
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_LIGHTING);
GL14.glBlendColor(0.0f, 0.0f, 0.0f, 0.7f);//就这里有问题会报异常
RenderUtils.setLight(GL11.GL_LIGHT1, ISharedConstant.faWhite,
ISharedConstant.faLightBlue, ISharedConstant.lightDirection);
}
我查看了源码:
public static void glBlendColor(float red, float green, float blue, float alpha) {
long function_pointer = GLContext.getCapabilities().GL14_glBlendColor_pointer;
BufferChecks.checkFunctionAddress(function_pointer);
nglBlendColor(red, green, blue, alpha, function_pointer);
}
public static void checkFunctionAddress(long pointer) {
if (pointer == 0) {
throw new IllegalStateException("Function is not supported");
}
}

也就是说long function_pointer = GLContext.getCapabilities().GL14_glBlendColor_pointer;在本地得到的指针为0,这就搞不清这个异常是个副产品还是别的,有没有lwjgl的高手啊?


0也就是null,可能是找不到glBlendColor函数。
你的classpath里有包含这个函数的包吗?


这个异常经常出现在jar包版本不配对的时候,比如Tomcat4.1的项目向5.5移植的时候。
比如你的程序里引用了一个myClass的类,调用了它的myFunction方法。然后编译过。
然而,在发布的时候,那个myClass的类被重新编译过了,里面去掉了myFunction方法,
这时你仍然可以运行以前的程序,但是一旦有哪个类里调用了myClass的myFunction方法,那么初始化这个类的同时就会抛这个异常。




toZhmt:glBlendColor函数在lwjgl的包内,应该说不是glBlendColor找不到,而是GL14_glBlendColor_pointer没能初始化成功,这个初始化调用了一个native方法,好像还调用了swt-opengl-win32.dll,所以我现在比较苦恼的就是没有找到更新的这个动态链接库试试。
tokeel47() :我也曾考虑过jar包办本不配对,我试过其他版本的jar文件,也不行,不过,我原有的project在别人的机器上是可以运行的,这里是启动一个3d视图的程序,我对这方面也不清楚,已经困扰了好几天了。:(


顶啊!


努力的顶啊!


关注中!我也出现了同样的问题,有人说是显卡不支持,但是我换了TNT2和Geforce2MX/MX400都不行,而且还出现在另外的方法中:
java.lang.IllegalStateException: Function is not supported
at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:67)
at org.lwjgl.opengl.ARBPointParameters.glPointParameterARB(ARBPointParameters.java:2
at 。。。。。
请高人指点啊


请lwjgl的高手啊!


↑返回目录
前一篇: SWT新手,是否有SWT/JFACE的帮助文档?
后一篇: java如何获取当前程序的路径