【发布时间】:2012-10-05 19:56:24
【问题描述】:
我正在使用 BlueJ 学习 java,最近我收到了一个名为 Imagen.jar 的 .jar 文件。显然,它的作用是根据作为参数提供的图像文件名返回一些像素向量。
无论如何,我应该编写一个程序来使用一个名为Imagen 的类。显然,此类在提到的.jar 文件中。
很明显,如果我使用这样的类,BlueJ 将不会编译,因为我没有导入它或任何东西。但是,我真的不知道如何首先导入这样的类。
我得到了以下示例代码:
import java.io.PrintWriter;
public class Main {
public static void main(String arg[ ]){
if(arg.length > 1){
Imagen imagen = new Imagen(arg[0]);
int [][] m = imagen.getMatriz();
PrintWriter salida = null;
try {
salida = new PrintWriter(arg[1]);
}
catch(Exception e){
System.err.println(e);
}
for(int [] fila : m ){
for(int valor : fila){
System.out.print("\t"+valor);
salida.print("\t"+valor);
}
salida.println("");
System.out.println("");
}
if(salida!=null){
salida.close();
}
}
else {
System.out.println("Uso: java -classpath .;Imagen.jar Main nombreArchivo.gif");
}
}
}
不使用 BlueJ 编译。但是,正如您所看到的,最后它说要使用它,您必须在终端中输入:
java -classpath .;Imagen.jar Main myImageFile.gif
我做到了。但它一直给我同样的信息。
所以我现在卡住了:
- 为什么我被告知使用的终端线路不起作用?
- 如何导入 .jar 文件中包含的类?
【问题讨论】:
-
“但它一直给我同样的信息”。请告诉我们错误消息的内容。
-
@ReyCharles:消息是 "Uso: java -classpath .;Imagen.jar Main nombreArchivo.gif"
-
在这种情况下,它似乎可以正常工作。您只是没有为程序提供参数(这似乎是一个 .gif 文件)。
-
你当然是对的。我认为重要的部分是错误来自java程序而不是JVM。此外,代码有点可疑。如果
new PrintWriter(arg[0])抛出异常(注意它是Exception,而不是IOException或更具体的),那么它只会打印错误并继续,直到程序最终抛出空指针异常。