Java 为什么Eclipse中的程序在另一个IDE中工作时会出现空指针?
我很难在Eclipse中运行一些代码。它是Java代码,包含来自处理的元素,在处理IDE中工作,但在Eclipse中会立即出现空指针异常。它还涉及另一个名为Picking的库。我有其他处理代码在Eclipse中运行良好,所以我怀疑这与挑选库有关 拾取jar在我的构建路径上,基于堆栈跟踪,我认为它可以被很好地访问 以下是堆栈跟踪:Java 为什么Eclipse中的程序在另一个IDE中工作时会出现空指针?,java,eclipse,processing,picking,processing-ide,Java,Eclipse,Processing,Picking,Processing Ide,我很难在Eclipse中运行一些代码。它是Java代码,包含来自处理的元素,在处理IDE中工作,但在Eclipse中会立即出现空指针异常。它还涉及另一个名为Picking的库。我有其他处理代码在Eclipse中运行良好,所以我怀疑这与挑选库有关 拾取jar在我的构建路径上,基于堆栈跟踪,我认为它可以被很好地访问 以下是堆栈跟踪: Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException at processing.
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at processing.opengl.PJOGL.enable(PJOGL.java:1640)
at processing.opengl.PGraphicsOpenGL.blendModeImpl(PGraphicsOpenGL.java:5947)
at processing.core.PGraphics.blendMode(PGraphics.java:1842)
at processing.core.PGraphics.defaultSettings(PGraphics.java:952)
at processing.opengl.PGraphicsOpenGL.defaultSettings(PGraphicsOpenGL.java:2003)
at processing.core.PGraphics.checkSettings(PGraphics.java:892)
at picking.Buffer.callCheckSettings(Unknown Source)
at picking.Picker.<init>(Unknown Source)
at PickingDemo.setup(PickingDemo.java:29)
at processing.core.PApplet.handleDraw(PApplet.java:2281)
at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:652)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:636)
at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1284)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1106)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:981)
at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1295)
at javax.media.opengl.Threading.invoke(Threading.java:193)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
at javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:595)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
at sun.awt.RepaintArea.paint(RepaintArea.java:224)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:308)
at java.awt.Component.dispatchEventImpl(Component.java:4736)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:674)
at java.awt.EventQueue.access$400(EventQueue.java:81)
at java.awt.EventQueue$2.run(EventQueue.java:633)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:647)
at java.awt.EventQueue$3.run(EventQueue.java:645)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:644)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
线程“AWT-EventQueue-1”java.lang.NullPointerException中的异常
at processing.opengl.PJOGL.enable(PJOGL.java:1640)
在processing.opengl.PGraphicsOpenGL.blendModeImpl(PGraphicsOpenGL.java:5947)
位于processing.core.PGraphics.blendMode(PGraphics.java:1842)
默认设置(PGraphics.java:952)
在processing.opengl.PGraphicsOpenGL.defaultSettings(PGraphicsOpenGL.java:2003)
at processing.core.PGraphics.checkSettings(PGraphics.java:892)
在picking.Buffer.callCheckSettings(未知源)时
正在拾取。拾取者。(未知来源)
在PickingDemo.setup(PickingDemo.java:29)
位于processing.core.PApplet.handleDraw(PApplet.java:2281)
在processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
在jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:652)
在jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:636)
位于javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1284)
在jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1106)
在jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:981)
位于javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1295)
位于javax.media.opengl.Threading.invoke(Threading.java:193)
位于javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
位于javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:595)
位于sun.awt.repaintrea.paintComponent(repaintrea.java:248)
位于sun.awt.repaintrea.paint(repaintrea.java:224)
位于sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:308)
位于java.awt.Component.dispatchEventImpl(Component.java:4736)
位于java.awt.Component.dispatchEvent(Component.java:4488)
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:674)
在java.awt.EventQueue.access$400(EventQueue.java:81)
在java.awt.EventQueue$2.run(EventQueue.java:633)
位于java.awt.EventQueue$2.run(EventQueue.java:631)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
位于java.awt.EventQueue$3.run(EventQueue.java:647)
在java.awt.EventQueue$3.run(EventQueue.java:645)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:644)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:184)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:174)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122)
代码如下:
import picking.*;
import processing.core.*;
public class PickingDemo extends PApplet{
// Declare a Picker object to do the picking.
Picker picker;
// Set up variables for the scene.
float r = (float) 0.0;
int[] colors = {
color(064,064,064), // Black
color(255,000,000), // Red
color(000,255,000), // Green
color(000,000,255), // Blue
color(255,255,000), // Yellow
color(255,000,255), // Purple
color(000,255,255), // Cyan
color(255,255,255) }; // White
int bgcolor = color(32);
public void setup(){
// Set the size, and make this a 3D sketch.
size(300,300, P3D);
// Set up the picking object.
picker = new Picker(this);
}
public void draw(){
// Define a variable to track the current object's ID.
int currentID = 0;
// The background's ID is always -1
background(bgcolor);
lights();
noStroke();
translate((float) (width/2.0), (float) (height/2.0), (float) (30));
rotateY(r);
r= (float) ((r+0.01)%TWO_PI);
for(int x=-1;x<2;x++){
for(int y=-1;y<2;y++){
for(int z=-1;z<2;z++){
// Each box has a different object ID, so you have to tell the picker which ID to use.
picker.start(currentID);
pushMatrix();
scale(40);
translate(x,y,z);
if(x*y*z != 0){
// Each box is has a different color.
fill(colors[currentID]);
// Draw the box.
box(1);
currentID++;
}
popMatrix();
// Tell the picker to stop using the ID, since we don't want any other objects to use this ID.
picker.stop();
}
}
}
// See the click buffer. Warning: Heavy code.
//loadPixels();
//picker.getBuffer().loadPixels();
//for( int i = 0; i < width * height; i++){
// pixels[i] = 200 * picker.getBuffer().pixels[i];
//}
//updatePixels();
}
public void mouseClicked(){
// Get the object ID at the mouse's position.
int mouseID = picker.get(mouseX,mouseY);
println( mouseID );
if(mouseID!=-1){
// Set the background to the same color (but darker) to indicate which box was clicked.
bgcolor = color( red(colors[mouseID])/2, green(colors[mouseID])/2, blue(colors[mouseID])/2 );
}
}
导入领料。*;
进口加工。核心。*;
公共类PickingDemo扩展了PApplet{
//声明一个选择器对象来执行拾取。
选择器选择器;
//为场景设置变量。
浮动r=(浮动)0.0;
int[]颜色={
颜色(064064064),//黑色
颜色(255000000),//红色
颜色(000255000),//绿色
颜色(000000255),//蓝色
颜色(255255000),//黄色
颜色(255000255),//紫色
颜色(000255255),//青色
颜色(255255)};//白色
int bgcolor=color(32);
公共作废设置(){
//设置尺寸,并使其成为三维草图。
尺寸(300300,P3D);
//设置拾取对象。
选择器=新选择器(本);
}
公众抽签(){
//定义一个变量来跟踪当前对象的ID。
int currentID=0;
//背景的ID始终为-1
背景色;
灯光();
仰泳();
平移((浮动)(宽度/2.0),(浮动)(高度/2.0),(浮动)(30));
rotateY(r);
r=(浮动)((r+0.01)%2μPI);
对于(intx=-1;x如果问题是eclipse没有看到拾取库,那么您需要将拾取库jar添加到eclipse项目中,并将其添加到构建路径中
试试这个:
创建一个名为libs的文件夹(如果项目中还没有)
将picking library.jar文件复制到该文件夹中
右键单击picking library.jar文件并选择构建路径>添加到构建路径