【发布时间】:2015-06-19 10:38:11
【问题描述】:
我有一个名为 Ullman 的 jar 库。这个 jar 包含 1 个名为 ullman 的类。我试图从该类访问一个 void,当我刚刚运行程序时,它正在工作,但是当我尝试 Clean and Build 它时,我收到以下错误:
error: match(ArrayList<int[][]>,int[][],ArrayList<ArrayList<String>>,ArrayList<String>,ArrayList<Integer>) is not public in Ullman; cannot be accessed from outside package
u.match(matrixgraph, matrixq, nodegraph, nodequery, nocandidategraph);
这是我导入该类的代码:
import ullman.Ullman;
public class Gui extends javax.swing.JFrame {
int max_frag;
int ratio;
public Ullman u=new Ullman();
........
然后当我尝试从此 GUI 类访问 void 时出现错误 调用void时的示例代码
u=new Ullman();
u.match(matrixgraph, matrixq, nodegraph, nodequery, nocandidategraph);
我该如何解决?
以下是ullman类中的match方法:
public void match(ArrayList<int[][]> matrixgraph, int[][] matrixquery, ArrayList<ArrayList<String>> nodegraph, ArrayList<String> nodequery, ArrayList<Integer> nocandidate) {
answer.clear();
matrixq=matrixquery;
for (int i = 0; i < matrixgraph.size(); i++) {
int [][]matrixsmile=matrixgraph.get(i);
matrixg=new int[matrixsmile.length-1][matrixsmile.length-1];
for(int x=0;x<matrixg.length;x++){
for(int y=0;y<matrixg.length;y++){
matrixg[x][y]=matrixsmile[x][y];
}
}
matrix_query_graph = new int[matrixq.length][matrixg[0].length];
for (int j = 0; j < matrix_query_graph.length; j++) {
for (int k = 0; k < matrix_query_graph[0].length; k++) {
matrix_query_graph[j][k] = 0;
}
}
// adjacency matrix M
ArrayList<String>nodeq = nodequery;
ArrayList<String>nodeg = nodegraph.get(i);
for(int m=0;m<nodeq.size();m++){
for(int n=0;n<nodeg.size();n++){
if (nodeq.get(m).equals(nodeg.get(n))) {
matrix_query_graph[m][n] = 1;
}
}
}
if (subgraphMatching(matrixq, matrixg, matrix_query_graph)) {
answer.add(nocandidate.get(i));
}
}
}
【问题讨论】:
-
请张贴
match()的方法签名。另外,您的Ullman课程是公开的吗?如果没有,它不能在它自己的包之外使用。 -
它已经在那里了。是的,厄尔曼课程已经公开了。现在我怀疑它无法在 jar 库中的其他包的类中访问该方法。但为什么?我很困惑,为什么我不能从 jar 库中的包中的类访问方法,但我可以从 1 个项目中不同包中的其他类访问方法(不是 jar 库)。
-
修复了格式、语法和拼写错误以提高可读性。请尝试改进标题并添加更多详细信息。