14

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

我做了以下事情。单击“A”-->Properties-->Build Path--> 在 Java Source 的一个选项卡中,我选择了项目 B.--> Accept

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

更新,

我不断收到 java.lang.ClassNotFoundException。

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

在此处输入图像描述

在 Run --> Run Configurations --> ClassPath 我有:

在此处输入图像描述

现在我添加了项目“JIRA”和“JIRA 依赖项” 在此处输入图像描述

JIRA 项目具有以下依赖项:

在此处输入图像描述

我收到以下错误:

在此处输入图像描述

但是这个类在 M2_REPO 中:

在此处输入图像描述

解决方案

我只在没有 Maven 的 JAR 中添加“JIRA 依赖项”: 在此处输入图像描述 现在它运行了。

4

7 回答 7

14

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

例子

于 2012-08-03T09:24:27.007 回答
11

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

于 2012-08-03T09:21:22.387 回答
7

将项目 B 放在构建路径上,然后从项目菜单选项中执行清理项目...然后使用它..

-

Click in "A" -->Properties -->Build Path --> Projects ---> Add the Project --->Ok
于 2012-08-03T09:24:17.053 回答
2

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

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

  1. 获取实例:

    MyClass instanceOfMyClass = MyClass.getInstance();

  2. 调用方法:

    instanceOfMyClass.someFunction(...);

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

根据 java doc java.lang.classNotFoundException 出现以下情况:

  1. 当我们尝试使用 MyClass.someMethod() 方法加载一个类并且 MyClass 在类路径中不可用时。
  2. 当 Classloader 尝试使用 findSystemClass() 方法加载类时。
  3. 在 Java 中使用 ClassLoader 类的 loadClass() 方法时。

要解决上述异常,我们需要:

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

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

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

于 2012-08-03T09:27:36.473 回答
0

如果 B 在同一个工作区中并且 alos 打开,则必须将 int 放入“项目”而不是“源”。如果你想让 A “更”独立,你必须导出 B.jar 并将其添加到“库”

于 2012-08-03T09:21:51.903 回答
0

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

于 2012-08-03T10:05:42.070 回答
0

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

于 2016-02-22T14:11:44.900 回答