java.lang.ClassNotFoundException when running in I

2019-01-03 07:17发布

I creating a program to work with databases and I am getting the following error when compiling in IntelliJ IDEA. Does anyone why this is happening and how I could solve it?

enter image description here

2条回答
走好不送
2楼-- · 2019-01-03 07:44
  • the jar may not execute if one of the dependent jars is digitally signed since the new artifact will include the partial signature of the dependency. See this answer for more details.

I must again emphasis the point CrazyCoder has here.

The (Oracle) JVM used to throw a SecurityException when you tried to run a Jar-File containing broken signatures. This made sense from a "What's wrong"-Point of view.

That is no longer the case. They are indeed throwing ClassNotFoundExceptions now - even if the class is right there in the file (no matter if it is in the default package/toplevel or way down in a nested package structure).

查看更多
我命由我不由天
3楼-- · 2019-01-03 07:59

The error that you get occurs not on complilation, but when you try to run your application. It happens because Java was not able to find Table.class file inside db subdirectory of the project output directory (classpath).

It can happen for multiple reasons:

  • wrong main class selected in the run/debug configuration
  • Table.java is excluded from compilation (by accident or intentionally because it contained errors and you wanted to skip it while working on other code)
  • class not compiled because Build step is excluded from from Before launch steps in the Run/Debug configuration
  • project is misconfigured and there is no Source root defined for the directory containing db subdirectory
  • Table.java has incorrect package statement or is located/moved to a different package
  • project path contains a colon : on Mac/Linux or semicolon ; on Windows, it's used to separate the classpath and will render the classpath invalid. See this thread for details. Note that Finder on Mac may display colons in the path as slashes.
  • the jar may not execute if one of the dependent jars is digitally signed since the new artifact will include the partial signature of the dependency. See this answer for more details.

In a properly configured project and with the correct run/debug configuration everything works just fine:

Run

查看更多
登录 后发表回答