【问题标题】:Processing code converted to Java using Eclipse error使用 Eclipse 错误处理转换为 Java 的代码
【发布时间】:2017-01-17 06:05:49
【问题描述】:

正如我在另一篇文章中提到的,我是 Java 的初学者。我正在尝试从基于销售数据的处理创建领域运行代码,并使用 Eclipse IDE 将它们转换为 Java,并在运行代码后遇到以下错误。

还在显示 float m 和 float m2 的行中(当我将光标悬停时,消息显示“未使用局部变量 m2 的值”。我将不胜感激。

    import java.awt.Color;

    import processing.core.*;
    import processing.core.PVector;
    import processing.data.Table;
    import processing.data.TableRow;


    public class UsingProcessing extends PApplet {
    Table table;
    int ballcount = 11;
    //int ballcount = table.getRowCount(); //NullPoint Exception error happening     here
    PVector[] orgin = new PVector[ballcount];
    float[]radii = new float[ballcount];
    Balls[]balls;
    Color[]cols = new Color[ballcount]; 

    public void setup(){
    background(255, 127, 245);
    noStroke();
    ortho();

    table = loadTable("HW 1 Data.csv", "header");
    println(table.getRowCount() + " total rows in table");
    balls = new Balls[table.getRowCount()];

    for (int i = 0; i<table.getRowCount(); i++){
        TableRow row = table.getRow(i);
        int product = row.getInt("Product");
        int sales = row.getInt("Sales");
        int category = row.getInt("Category");

        //Add to Arrays
        orgin[i]= new PVector(width/2, height/2);
        balls[i] = new Balls(product,sales,category);
        radii[i] = (sales/30000);
        if (category == 1) {
           cols[i]= new Color(255, 30, 50);
        }  else if (category == 2){
           cols[i]= new Color(100,255,50);
        }  else {
           cols[i]= new Color(100,50,255);
      }

       //cols[i]= color(150,100,150,200);
      }
    }

     public void draw() {
         background(50);
         shininess(45);
         lightSpecular(255, 255, 255);
         directionalLight(254, 254, 254, 1, 1, -1);
         specular(225, 225, 225);
 ambientLight(90, 90, 90);
 ambient(90, 90, 90);

 // orb-orb collision
 for (int i=0; i<orgin.length; i++) {
   for (int j=1+1; j<orgin.length; j++) {
     float r2 =  radii[i] + radii[j];
     float d = dist(orgin[i].x, orgin[i].y, orgin[j].x, orgin[j].y);
     if (d < r2) {
       if (d==0) { // avoid dist of 0
         orgin[i].add(new PVector(random(-.1, .1), random(-.1, .1)));
       }
       PVector axis = PVector.sub(orgin[i], orgin[j]);
       float m = axis.mag();
       float m2 =  radii[i] + radii[j] - m;
       axis.normalize();
       PVector temp = new PVector();
       temp.set(orgin[i]);
       orgin[i].x = orgin[j].x + axis.x*r2;
       orgin[i].y = orgin[j].y + axis.y*r2;
       orgin[j].x = temp.x - axis.x*r2;
       orgin[j].y = temp.y - axis.y*r2;
     }
   }
 }

 for (int i=0; i<orgin.length; i++) {
   fill(cols[i].getRGB());
   pushMatrix();
   translate(orgin[i].x, orgin[i].y);
   sphere(radii[i]);
   popMatrix();

   // boundary collison
   if (orgin[i].x > width-radii[i]) {
     orgin[i].x = width-radii[i];
   } else if (orgin[i].x < radii[i]) {
     orgin[i].x = radii[i];
   } 

   if (orgin[i].y > height-radii[i]) {
     orgin[i].y = height-radii[i];
   } else if (orgin[i].y < radii[i]) {
     orgin[i].y = radii[i];
   }
 }
}

private float random(double d, double e) {
// TODO Auto-generated method stub
return 0;
}

class Balls {
   int product; 
   int sales;
   int category;;
   int radius;

   boolean over = false;

   Balls(){
   }
   Balls(int product, int sales, int category){
     this.product = product;
     this.sales = sales;
     this.category = category;
   }
}
public static void main(String[] args) {

PApplet.main("UsingProcessing");

}
public void settings(){
size(1200, 700, P3D);

}


}

错误:

java.lang.NoClassDefFoundError: com/jogamp/opengl/GLException
    at processing.opengl.PGraphicsOpenGL.createPGL(PGraphicsOpenGL.java:668)
    at processing.opengl.PGraphicsOpenGL.<init>(PGraphicsOpenGL.java:532)
    at processing.opengl.PGraphics3D.<init>(PGraphics3D.java:35)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at processing.core.PApplet.makeGraphics(PApplet.java:2227)
    at processing.core.PApplet.createPrimaryGraphics(PApplet.java:2306)
    at processing.core.PApplet.initSurface(PApplet.java:10399)
    at processing.core.PApplet.runSketch(PApplet.java:10338)
    at processing.core.PApplet.main(PApplet.java:10094)
    at processing.core.PApplet.main(PApplet.java:10076)
    at UsingProcessing.main(UsingProcessing.java:126)
Caused by: java.lang.ClassNotFoundException: com.jogamp.opengl.GLException
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more
java.lang.RuntimeException: com/jogamp/opengl/GLException
    at processing.core.PApplet.makeGraphics(PApplet.java:2260)
    at processing.core.PApplet.createPrimaryGraphics(PApplet.java:2306)
    at processing.core.PApplet.initSurface(PApplet.java:10399)
    at processing.core.PApplet.runSketch(PApplet.java:10338)
    at processing.core.PApplet.main(PApplet.java:10094)
    at processing.core.PApplet.main(PApplet.java:10076)
    at UsingProcessing.main(UsingProcessing.java:126)

【问题讨论】:

  • 你有没有想过这个问题?

标签: java eclipse processing


【解决方案1】:

m2 is not used 错误只是一个警告。这与您的错误无关。

您的错误是由您的代码尝试使用不在您的类路径中的类引起的。你需要修复你的类路径。

要修改您的类路径,请右键单击您的项目,然后转到属性,然后转到 Java 构建路径。您需要将库 jar 添加到您的类路径中。

【讨论】:

  • 感谢@KevinWorkman。通过将所有库添加到正确的类路径来修复。再次感谢。
【解决方案2】:

此外,在导入处理 jar 时,请记住添加包含库的 core\library 的所有内容,以访问本机代码以使用 openGL 和其他处理功能

gluegen-rt-natives-windows-i586.jar ... jogl-all-natives-linux-amd64.jar ... 抄送...

m 和 m2 是未使用的变量,IDE 告诉您它们超出了任何可能交互的范围(您没有使用它们,他可以知道)

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多