java.lang.thread.run报错
时间: 2023-03-16 22:46:52 浏览: 434
java.lang.Thread.run报错是指在Java程序中使用多线程时,线程的run方法出现了异常或错误,导致程序无法正常执行。通常情况下,这种错误是由于程序中的代码逻辑问题或者资源竞争问题引起的。要解决这种错误,需要仔细分析程序的代码逻辑,找出问题所在,并进行相应的修复。同时,还需要注意多线程编程的规范和注意事项,避免出现资源竞争等问题。
相关问题
Exception in Application constructor Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:893) Caused by: java.lang.RuntimeException: Unable to construct Application instance: class Main at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:750) Caused by: java.lang.NoSuchMethodException: Main.<init>() at java.lang.Class.getConstructor0(Class.java:3110) at java.lang.Class.getConstructor(Class.java:1853) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$7(LauncherImpl.java:818) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$3(WinApplication.java:177) ... 1 more出现这个报错怎么解决
这个报错信息是因为在你的Main类中没有默认的构造函数,需要手动添加一个无参构造函数。在Java中,如果没有手动定义构造函数,编译器会自动添加一个无参构造函数,但是一旦你手动定义了一个有参构造函数,编译器就不会自动生成无参构造函数了。
所以你需要在Main类中添加一个无参构造函数,如下所示:
```java
public class Main extends Application {
public Main() {
// 空构造函数
}
// 其他代码...
}
```
这样就可以解决这个报错了。
idea插件报错如下 如何解决java.lang.Throwable: Read access is allowed from inside read-action (or EDT) only (see com.intellij.openapi.application.Application.runReadAction()) at com.intellij.openapi.diagnostic.Logger.error(Logger.java:202) at com.intellij.openapi.application.impl.ApplicationImpl.assertReadAccessAllowed(ApplicationImpl.java:1056) at com.intellij.openapi.editor.impl.CaretImpl.validateContext(CaretImpl.java:1319) at com.intellij.openapi.editor.impl.CaretImpl.getOffset(CaretImpl.java:659) at com.ts.rubikstudioforas.listener.MyCompletionContributor.fillCompletionVariants$lambda$0(MyCompletionContributor.kt:47) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)
这个错误通常是因为在非 EDT(Event Dispatch Thread)线程中尝试访问 Swing 组件。你可以使用 `ApplicationManager.getApplication().invokeLater()` 方法来确保代码在 EDT 线程中执行。例如,你可以这样修改代码:
```
ApplicationManager.getApplication().invokeLater {
// 在此处放置你的代码
}
```
这将确保代码在 EDT 线程中执行,并且不会触发读取操作的异常。
阅读全文