我有一个使用组件来构建程序的 Java 作业。老师给了我们一个 JAR,我们将用它来使用 Eclipse 构建计算器。JAR 有 2 个类。我们必须导入 JAR 并使用它的类。
我导入 JAR:
import SWEB401_HW1.NumericOperation;
但是当我尝试为该类创建一个对象时,它给了我一个错误,因为构造函数不可见。如何使用类“ NumericOperation
”来构建计算器?
有了你提供的信息——考虑到这是一项任务——我只能给你一些关于寻找什么的提示。
假设您的项目设置正确,并且您仍然无法创建 NumericOperation 实例,...
编辑:不想全部放弃,所以我会保持模糊。由于 NumericOperation 确实似乎是一个抽象类,请尝试编写如下所示的类,看看您必须做什么才能停止 IDE 抱怨:
public class MyNumericOperation extends NumericOperation {}
您还可以在此处查看Java 教程的继承部分。
如果构造函数不可见,那么您正在尝试调用非公共构造函数。查看 NumericOperation 类的代码或 java 文档,找到一个公开的构造函数。很可能您正在调用无参数构造函数,并且该类专门隐藏了它,因为您需要一个初始值。
例如:
public class MyClass {
private MyClass() {
// Don't let callers instantiate me without args!
}
public MyClass(int initialValue) {
// create a new object with initialValue
}
}
如果调用代码尝试这样做:
MyClass obj = new MyClass();
你会得到你发布的错误。您需要改为调用 new MyClass(int) 。
如果您得到的错误是说 onstructor 不是“可见的”,那么它是在谈论 java 中的可见性(公共、provate、protected 和 package)。
这很好——这意味着你已经成功地导入了这个类并且它在你的类路径中。忽略所有其他关于愚弄你的类路径的答案 - eclipse 正在为你处理它,好吧。
猜测一下,你的老师搞砸了,没有在你需要使用的构造函数上放一个“公共”声明。
要解决此问题,您正在编写的类需要位于 SWEB401_HW1 包中。
eclipse 中最简单的方法是在导航器中右键单击 java 文件,然后通过将其“移动”到包 SWEB401_HW1 中来“重构”它。
如果我正确理解你的问题,你不需要导入任何东西。这不是您访问 JAR 文件中的类的方式。相反,您需要将 JAR 文件的路径添加到 Java 的类路径中;你如何做到这一点取决于你的操作系统。或者,您可以将 JAR 文件提取到您自己程序的类文件所在的目录中。JAR 文件只是具有不同扩展名的 ZIP 文件,因此您可以使用通常用于打开 ZIP 文件的任何内容来提取它,或者您可以使用jar
JDK 附带的工具:
jar xf SWEB301_HW1.jar
没有必要提取任何东西。您需要通过将 JAR 添加到类路径中来在项目中使用它。
你在使用 Eclipse 吗?如果是这样,您可以转到项目属性 -> java 构建路径 -> 库 -> 添加外部 JAR -> 搜索您的 jar 并添加它们。
这样,您将获得项目中的所有 JAR 类。
如果讲师给您 Javadocs、API 列表或源代码,请查找以下内容:
第一个可以在任何类中,但很可能在 NumericOperation 类中。
第二个是带参数的 NumericOperation 类中的构造函数。请记住,如果类提供了构造函数,编译器不会为您生成无参数的构造函数。
最后一个将在另一个类中(因为您需要一个实例来调用该方法)。
将来发布编译器吐出的确切错误消息比粗略陈述它所说的内容更有帮助。
与一些较早的答案一致,您需要通过类路径获得 jar,因此当您运行或编译时
java(c) -cp myjar.jar:. etc
我通常包含当前目录,这样它就不会忘记我的代码在路径中。
导入时,必须使用 java 包名。在 zip 程序中打开 jar 并将路径归档到您需要的类文件,然后输入“import path;” 您将文件夹分隔符替换为“。”