在另一个项目Eclipse中调用一个类

时间:2012-08-03 09:17:16

标签: java eclipse

我有一个项目“A”,我需要从另一个项目“B”调用一个“c”类。

我做了以下事情。点击“A” - >属性 - >构建路径 - >在Java Source的一个选项卡中,我选择了项目B. - >接受

现在我可以创建类“c”的objets但是当我运行项目时,我得到“ClassNotFoundException”

更新

我不断收到java.lang.ClassNotFoundException。

在“JSF”中 - >属性 - >构建路径 - >项目--->我添加了项目:

enter image description here

在运行中 - >运行配置 - > ClassPath我有:

enter image description here

现在我添加了项目“JIRA”和“JIRA依赖项” enter image description here

JIRA项目具有以下依赖关系:

enter image description here

我收到以下错误:

enter image description here

但是这个课程在M2_REPO中:

enter image description here

我只在没有Maven的JAR中添加“JIRA依赖项”: enter image description here 现在它已经运行了。

7 个答案:

答案 0 :(得分:14)

您应该在“项目”标签中添加另一个项目,或在“库”标签中添加项目的类文件夹。

example

答案 1 :(得分:11)

您需要将项目B添加到项目A使用的运行配置中。在菜单中运行 - >运行配置...,在运行配置的“classpath”选项卡中添加项目B.

答案 2 :(得分:7)

将Project B放在Build路径上,然后从Project Menu选项中执行Clean项目...然后使用它..

<强> -

Click in "A" -->Properties -->Build Path --> Projects ---> Add the Project --->Ok

答案 3 :(得分:2)

为了从Java中的Classes调用方法,首先需要该类的实例。

因此,在您的代码中,您需要执行以下操作:

  1. 获取实例:

    MyClass instanceOfMyClass = MyClass.getInstance();

  2. 调用方法:

    instanceOfMyClass.someFunction(...);

  3. 这意味着当你调用getInstance()时,如果这样的实例已经存在,它将返回MyClass的实例,或者如果没有实例,它将创建一个新的实例。在获取类的实例后,如果它们具有适当的访问修饰符,则只需调用它的方法。

    根据java doc java.lang.classNotFoundException有以下几种情况:

    1. 当我们尝试使用MyClass.someMethod()方法加载类时,类路径中没有MyClass。
    2. 当Classloader尝试使用findSystemClass()方法加载类时。
    3. 在Java中使用类ClassLoader的loadClass()方法时。
    4. 要解决上述异常,我们需要:

      1. 首先找出存在有问题的类文件的jar文件,例如“com.mysql.jdbc.driver”的mysql-connector-java.jar。如果您不知道如何找到特定类的jar文件,您只需在Eclipse中执行“Ctrl + T”并键入类的名称,它将按照它们在eclipse类路径中出现的顺序列出所有jar。

      2. 检查您的类路径是否包含该jar,如果您的类路径不包含jar,则只需在类路径中添加该类。

      3. 如果它存在于您的类路径中,则很有可能您的类路径被覆盖,或者应用程序正在使用jar文件或启动脚本中指定的类路径,并修复您需要找到所使用的确切类路径你的申请。

答案 4 :(得分:0)

如果B位于同一个工作区并打开alos,则必须将int放在“Projects”中,而不是“Source”。 如果你想让A更“独立”,你必须导出B.jar并将其添加到“Libraries”

答案 5 :(得分:0)

另请考虑使用maven。如果您有多模块项目,它非常有用。只需添加abother项目的依赖项,maven将负责休息..!

答案 6 :(得分:0)

创建项目“A”作为jar并在项目“B”构建路径中添加此jar。然后您可以调用所需的类并使用calss名称导入该类包名称。