所以我找不到一个已经问过的问题来解答我的确切问题。我有一个我在eclipse中编写的包,我将其导出为jar库以用于处理ide。在处理中我有一个草图,它有一个类来调用包中的类。当我尝试编译我得到这个错误:
Pirate(processing.core.PApplet,java.lang.String,processing.core.PVector,float,float,int,int) is not public in fsg.pvzclone.pirateunits.Pirate; cannot be accessed from outside package
[javac] fsg.pvzclone.pirateunits.Pirate pirate1 = new fsg.pvzclone.pirateunits.Pirate(this, "Pirate", pinPoint, pWidth, pHeight, 1, 1).displayPirate();
有谁知道为什么我不能上课?我将类和构造函数都设置为public
,所以我不确定为什么无法访问该类。任何帮助将不胜感激。
结构代码:
package fsg.pvzclone.pirateunits;
import processing.core.*;
public class Pirate {
public String pirateClass;
int classId;
PVector pinPoint;
float width;
float height;
int id;
PApplet parent;
public Pirate(processing.core.PApplet _parent, String _pirateClass, PVector _pinPoint,
float _width, float _height, int _classId, int _id) {
parent = _parent;
pirateClass = _pirateClass;
classId = _classId;
width = _width;
height = _height;
pinPoint = _pinPoint;
id = _id;
}
public void displayPirate() {
parent.fill(13, 183, 20, 255);
parent.stroke(7, 59, 9, 255);
parent.rect(this.pinPoint.x-this.width/2, (float)(this.pinPoint.y-this.height*.75), this.width, this.height);
}
}
CODE CALLING PIRATE CLASS:
fsg.pvzclone.pirateunits.Pirate pirate1 = new fsg.pvzclone.pirateunits.Pirate(this, "Pirate", pinPoint, pWidth, pHeight, 1, 1).displayPirate();
答案 0 :(得分:4)
尝试在Pirate类中创建公共默认构造函数,并尝试将其称为:
public class Pirate{
public Pirate () {}
....
}
调用代码:
fsg.pvzclone.pirateunits.Pirate emptyPirate1 = new fsg.pvzclone.pirateunits.Pirate();
并检查你是否仍然得到相同的错误信息?
答案 1 :(得分:3)
不确定这是你的问题,但这是一个问题,评论时间太长 - 你应该更换;
fsg.pvzclone.pirateunits.Pirate pirate1 = new fsg.pvzclone.pirateunits.Pirate(this, "Pirate", pinPoint, pWidth, pHeight, 1, 1).displayPirate();
使用:
fsg.pvzclone.pirateunits.Pirate pirate1 = new fsg.pvzclone.pirateunits.Pirate(this, "Pirate", pinPoint, pWidth, pHeight, 1, 1);
pirate1.displayPirate();
由于displayPirate
什么都不返回,不是海盗。
答案 2 :(得分:1)
如果Pirate类是如图所示的1:1,那么我怀疑你在某个地方的类路径中有一个旧版本。仔细检查旧版本的类路径,包括.java和.class。