【问题标题】:Project java with two packages, but a java.lang.ClassNotFoundException between the two项目 java 有两个包,但两者之间有一个 java.lang.ClassNotFoundException
【发布时间】:2021-05-17 09:02:58
【问题描述】:

我有一个 intellij 项目,有两个包。 其中一个在第二个中调用列表。 数据库连接没问题(我把 sysout 放在各处以满足我的要求) 当应该从另一个包的管理器中筛选列表的类调用它时,就会出现问题。

   public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        System.out.println("on est dans le servlet pour afficher les voitures");
        CarManager cm = new CarManager();
        List<Car> cars = cm.lister();

问题发生在 'CarManager cm = new CarManager();'

它显示:java.lang.ClassNotFoundException: org.example.CarManager 但是,它是否已导入到我的 servlet 中: import org.example.CarManager;而且我在IDE中没有错误(红色或其他) 我试图在 carmanager 的文件夹中执行“javac”,但出现错误。

问题是:我不知道为什么或如何解决它。

【问题讨论】:

  • 看起来CarManager 在运行时不在您的类路径中,但在编译时它在类路径中(这就是为什么您在 Intellij 中不会出现红色曲线的原因)。很难说为什么,因为我们看不到您的代码、您的运行方式等。但这就是问题所在。
  • 您需要指定如何构建和启动项目
  • @DeeDee44 从顶部菜单中,尝试Build -&gt; Clean Project & 然后Build -&gt; Rebuild Project 如果这样做不起作用然后File -&gt; Invalidate Cache/Restart
  • 您好!谢谢你的回答!好吧,我用 tomcat 9 运行项目我尝试了 Darshan 答案的 Build/clean 等,但仍然不起作用,我有同样的错误:(
  • OH WOW 实际上我找到了怎么做(但完全靠运气 o_O)我在运行配置中更改了我的工件,只是为了尝试,没关系!我不知道为什么,但酷我不会被我的学校杀死!

标签: java intellij-idea javac


【解决方案1】:

如果 Car Manager 类在另一个包中,那么您不能仅通过基本方法包含其功能:

className objectName= new className();

要让它工作,你必须先导入它

import packagename.classname;

确保您要导入的类是公开的,否则它将无法工作

例如:假设我有 2 个包 ab。我想在a中导入包b的类x的函数sayHello()

我首先将类和函数都作为公共导入,然后在我使用以下方法导入它:

import b.x;

那我要在哪里使用我写的函数:

x obj = new x();
obj.sayHello()

【讨论】:

    【解决方案2】:

    我找到了方法,但完全靠运气。

    我在运行配置中更改了我的工件,只是为了尝试一下,没关系!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 2011-04-27
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多