我有一个Java分配,它使用组件来构建程序。老师给了我们一个JAR,我们将用它来构建使用Eclipse的计算器。 JAR有2个班级。我们必须导入JAR并使用它的类。
我导入JAR:
import SWEB401_HW1.NumericOperation;
但是当我尝试为类创建一个对象时,它会给我一个错误,因为构造函数不可见。如何使用“NumericOperation
”类来构建计算器?
答案 0 :(得分:3)
根据您提供的信息 - 并考虑到这是一项任务 - 我只能给您一些关于要查找内容的提示。
假设你的项目设置正确,你仍然无法创建NumericOperation的实例,...
编辑: 不想把它全部拿走,所以我会保持这个模糊。由于NumericOperation确实似乎是一个抽象类,尝试编写类似下面的类,看看你必须做些什么来阻止IDE抱怨:
public class MyNumericOperation extends NumericOperation {}
您还可以查看Java Tutorial here的继承部分。
答案 1 :(得分:2)
如果构造函数不可见,那么您正在尝试调用非公共构造函数。查看NumericOperation类的代码或java doc,找到一个公共的构造函数。很可能你正在调用无参数构造函数,并且该类特别隐藏了它,因为你需要一个初始值。
例如:
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();
您将收到您发布的错误。你需要调用新的MyClass(int)。
答案 2 :(得分:1)
如果你得到的错误是说onstructor不是“可见的”,那么它就是在讨论java中的可见性(public,provate,protected和package)。
这很好 - 这意味着你已经成功地导入了这个类并且它在你的类路径中。忽略谈论愚弄你的类路径的所有其他答案 - eclipse正在为你照顾它。
在 guess ,你的老师 f * cked up 没有在你需要使用的构造函数上放置“公共”声明。
要解决此问题,您正在编写的类需要位于SWEB401_HW1包中。
在eclipse中执行此操作的最简单方法是右键单击导航器中的java文件,并通过将其“移动”到SWEB401_HW1包中来“重构”它。
答案 3 :(得分:0)
如果我正确理解您的问题,则无需导入任何内容。这不是您访问JAR文件中的类的方式。相反,您需要将JAR文件的路径添加到Java的类路径中;具体取决于您的操作系统。或者,您可以将JAR文件解压缩到您自己的程序的类文件所在的目录中。 JAR文件只是一个具有不同扩展名的ZIP文件,因此您可以使用通常用于打开ZIP文件的任何内容来提取它,或者您可以使用JDK附带的jar
工具:
jar xf SWEB301_HW1.jar
答案 4 :(得分:0)
没有必要提取任何东西。您需要在项目中将JAR添加到类路径中来使用JAR。
您使用的是Eclipse吗?如果是这样,您可以转到项目属性 - > java构建路径 - >库 - >添加外部JAR - >搜索您的罐子并添加它们。
这样你就可以获得项目中的所有JAR类。
答案 5 :(得分:0)
如果教师为您提供了Javadocs,API列表或源代码,请查找以下内容:
第一个可以在任何类中,但可能在NumericOperation类中。
第二个是NumericOperation类中的一个构造函数,它接受参数。请记住,如果类提供构造函数,则编译器不会为您生成无参数。
最后一个将在另一个类中(因为你需要一个实例来调用该方法)。
将来发布编译器吐出的确切错误消息比粗略陈述它所说的更有帮助。
答案 6 :(得分:0)
与一些早期的答案一致,你需要通过类路径提供jar,所以当你运行或编译时
java(c) -cp myjar.jar:. etc
我通常包含当前目录,这样就不会忘记我的代码在路径中。
导入时,必须使用java包名称。在zip程序中打开jar并将路径存档到所需的类文件,然后输入“import path;”用'。'
替换文件夹分隔符的位置