如果您想了解为什么生成javadocs时会出现ClassCastException?的相关知识,那么本文是一篇不可错过的文章,我们将对为什么java生成不了class文件进行全面详尽的解释,并且为您提
如果您想了解为什么生成javadocs时会出现ClassCastException?的相关知识,那么本文是一篇不可错过的文章,我们将对为什么java生成不了class文件进行全面详尽的解释,并且为您提供关于Caused by: java.lang.ClassCastException、Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apach...、ClassCastException:: cannot be cast to class java.lang.Comparable的处理方法、Exception in thread "main" java.lang.ClassCastException的有价值的信息。
本文目录一览:- 为什么生成javadocs时会出现ClassCastException?(为什么java生成不了class文件)
- Caused by: java.lang.ClassCastException
- Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apach...
- ClassCastException:: cannot be cast to class java.lang.Comparable的处理方法
- Exception in thread "main" java.lang.ClassCastException
为什么生成javadocs时会出现ClassCastException?(为什么java生成不了class文件)
我正在使用ant生成javadocs,但是一遍又一遍地获取此异常-为什么?
我正在使用JDK 1.6.0_06 版本。
[javadoc] java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc [javadoc] at com.sun.tools.javadoc.AnnotationDescImpl.annotationType(AnnotationDescImpl.java:46) [javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.getAnnotations(HtmlDocletWriter.java:1739) [javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.writeAnnotationInfo(HtmlDocletWriter.java:1713) [javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.writeAnnotationInfo(HtmlDocletWriter.java:1702) [javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.writeAnnotationInfo(HtmlDocletWriter.java:1681) [javadoc] at com.sun.tools.doclets.formats.html.FieldWriterImpl.writeSignature(FieldWriterImpl.java:130) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.buildSignature(FieldBuilder.java:184) [javadoc] at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) [javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [javadoc] at java.lang.reflect.Method.invoke(Method.java:597) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.invokeMethod(FieldBuilder.java:114) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractBuilder.build(AbstractBuilder.java:90) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractMemberBuilder.build(AbstractMemberBuilder.java:56) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.buildFieldDoc(FieldBuilder.java:158) [javadoc] at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source) [javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [javadoc] at java.lang.reflect.Method.invoke(Method.java:597) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.invokeMethod(FieldBuilder.java:114) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractBuilder.build(AbstractBuilder.java:90) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractMemberBuilder.build(AbstractMemberBuilder.java:56) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.buildFieldDetails(ClassBuilder.java:301) [javadoc] at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) [javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [javadoc] at java.lang.reflect.Method.invoke(Method.java:597) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.invokeMethod(ClassBuilder.java:101) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractBuilder.build(AbstractBuilder.java:90) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.buildClassDoc(ClassBuilder.java:124) [javadoc] at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) [javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [javadoc] at java.lang.reflect.Method.invoke(Method.java:597) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.invokeMethod(ClassBuilder.java:101) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractBuilder.build(AbstractBuilder.java:90) [javadoc] at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.build(ClassBuilder.java:108) [javadoc] at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:155) [javadoc] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:164) [javadoc] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:106) [javadoc] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64) [javadoc] at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42) [javadoc] at com.sun.tools.doclets.standard.Standard.start(Standard.java:23) [javadoc] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [javadoc] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [javadoc] at java.lang.reflect.Method.invoke(Method.java:597) [javadoc] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:215) [javadoc] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:91) [javadoc] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340) [javadoc] at com.sun.tools.javadoc.Start.begin(Start.java:128) [javadoc] at com.sun.tools.javadoc.Main.execute(Main.java:41) [javadoc] at com.sun.tools.javadoc.Main.main(Main.java:31)
答案1
小编典典看来这已被报告为Java错误。这似乎是由于使用了第三方库(例如JUnit)中的注释,而在Javadoc调用中不包含带有该注释的jar。
如果是这种情况,只需在javadoc上使用-classpath选项并包括额外的jar文件。
Caused by: java.lang.ClassCastException
报错信息如下: 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 com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs (LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication (LauncherImpl.java:328) 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:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1 (LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155 (LauncherImpl.java:182) at java.lang.Thread.run (Thread.java:745) Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to javafx.beans.value.ObservableValue at ruiyi.gui.controller.special.AbstractSpecificAnalysisView.lambda$bindDataToJFXTreeTableColumnDT$1 (AbstractSpecificAnalysisView.java:106) at javafx.scene.control.TreeTableColumn.getCellObservableValue (TreeTableColumn.java:563) at javafx.scene.control.TreeTableColumn.getCellObservableValue (TreeTableColumn.java:548) at javafx.scene.control.TreeTableCell.updateItem (TreeTableCell.java:635) at javafx.scene.control.TreeTableCell.indexChanged (TreeTableCell.java:457) at javafx.scene.control.IndexedCell.updateIndex (IndexedCell.java:116) at com.sun.javafx.scene.control.skin.TableRowSkinBase.updateCells (TableRowSkinBase.java:533) at com.sun.javafx.scene.control.skin.TreeTableRowSkin.updateCells (TreeTableRowSkin.java:220) at com.sun.javafx.scene.control.skin.TableRowSkinBase.init (TableRowSkinBase.java:147) at com.sun.javafx.scene.control.skin.TreeTableRowSkin.(TreeTableRowSkin.java:89) at com.jfoenix.skins.JFXTreeTableRowSkin.(JFXTreeTableRowSkin.java:59) at com.jfoenix.controls.JFXTreeTableRow.createDefaultSkin (JFXTreeTableRow.java:45) at javafx.scene.control.Control.impl_processCSS (Control.java:872) at javafx.scene.Node.processCSS (Node.java:9056) at javafx.scene.Node.applyCss (Node.java:9153) at com.sun.javafx.scene.control.skin.VirtualFlow.setCellIndex (VirtualFlow.java:1964) at com.sun.javafx.scene.control.skin.VirtualFlow.getCell (VirtualFlow.java:1797) at com.sun.javafx.scene.control.skin.VirtualFlow.getCellLength (VirtualFlow.java:1879) at com.sun.javafx.scene.control.skin.VirtualFlow.computeViewportOffset (VirtualFlow.java:2528) at com.sun.javafx.scene.control.skin.VirtualFlow.layoutChildren (VirtualFlow.java:1189) at javafx.scene.Parent.layout (Parent.java:1087) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Parent.layout (Parent.java:1093) at javafx.scene.Scene.doLayoutPass (Scene.java:552) at javafx.scene.Scene.preferredSize (Scene.java:1646) at javafx.scene.Scene.impl_preferredSize (Scene.java:1720) at javafx.stage.Window$9.invalidated (Window.java:846) at javafx.beans.property.BooleanPropertyBase.markInvalid (BooleanPropertyBase.java:109) at javafx.beans.property.BooleanPropertyBase.set (BooleanPropertyBase.java:144) at javafx.stage.Window.setShowing (Window.java:922) at javafx.stage.Window.show (Window.java:937) at javafx.stage.Stage.show (Stage.java:259) at application.Main.start (Main.java:80) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162 (LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175 (PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173 (PlatformImpl.java:295) at java.security.AccessController.doPrivileged (Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174 (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$148 (WinApplication.java:191) 这里的 ObservableValue 是 javafx.beans.value 包下的 interface 我的代码是这样的: protected void bindDataToJFXTreeTableColumnDT (JFXTreeTableColumn column, String key) { // 数据查找绑定到 table view column.setCellValueFactory ((TreeTableColumn.CellDataFeatures param) -> { if (column.validateValue (param)) return param.getValue ().getValue ().getValue (key); else return column.getComputedValue (param); }); } 我同事写的代码是这样的 protected void bindDataToJFXTreeTableColumn (JFXTreeTableColumn column, String key) { // 数据查找绑定到 table view column.setCellValueFactory ((TreeTableColumn.CellDataFeatures param) -> { if (column.validateValue (param)) return param.getValue ().getValue ().getValue (key); else return column.getComputedValue (param); }); } 同事的代码执行不报错,我的报错。Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apach...
错误:
Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apache.hadoop.io.WritableComparable (java.lang.Double is in module java.base of loader ''bootstrap''; org.apache.hadoop.io.WritableComparable is in unnamed module of loader ''app'')
原因:
在写Comparator时方法写错了,还导错了包
解决: 应该改为
导入这两个包
ClassCastException:: cannot be cast to class java.lang.Comparable的处理方法
在向数据结构如TreeSet中插入自定义的对象时,如以下代码:
public class demo {
public static void main(String[] args) {
TreeSet<Person> data = new TreeSet<>();
Person person1 = new Person("Edmond",17);
Person person2 = new Person("John",19);
data.add(person1);
data.add(person2);
for(Person p : data){
System.out.println(p);
}
}
static class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
}
系统将会在第一次add时便进行报错:
原因在于当我们将数据存入TreeSet时,内部会自动进行排序,例如我们存入‘A‘,’C’,‘B’, 打印输出时将显示’A’,‘B’,‘C’。因此如果我们存入的数据类型为自定义类型时,系统将不知道如何进行排序。
因此我们需要implement Comparable接口,并自己定义比较规则,示范代码如下:
public class demo {
public static void main(String[] args) {
TreeSet<Person> data = new TreeSet<>();
Person person1 = new Person("Edmond",19);
Person person3 = new Person("Tom",9);
data.add(person1);
data.add(person2);
data.add(person3);
for(Person p : data){
System.out.println(p);
}
}
static class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareto(Person o) {
//this当前对象 与 o 比较
//返回数据有三种类型:
//整数 : 代表this当前对象较大
//0 : 代表一样大
//负数 : 代表this当前对象较小
if(this.age > o.age){
return 1;
}else if(this.age == o.age){
return 0;
}
return -1;
//可以简写为return this.age - o.age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
",age=" + age +
'}';
}
}
}
无报错,输出为:
总结
当遇到ClassCastException:: cannot be cast to class java.lang.Comparable,自定义的class需要implement Comparable接口,并根据需求重写compareto方法,
其中compareto方法返回值有三种:
//整数 : 代表this当前对象较大
//0 : 代表一样大
//负数 : 代表this当前对象较小
Exception in thread "main" java.lang.ClassCastException
启动 springboot 时,报这个错 Exception in thread "main" java.lang.ClassCastException
原因:热部署搞的,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于 Java 应用程序来说,热部署就是在运行时更新 Java 类文件。在基于 Java 的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于 Java 的应用服务器,包括 EJB 服务器和 Servlet 容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。
所以没有它又不行,只能在配置文件中加一句
<optional>true</optional>
这样就能正常运行了。
关于为什么生成javadocs时会出现ClassCastException?和为什么java生成不了class文件的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Caused by: java.lang.ClassCastException、Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apach...、ClassCastException:: cannot be cast to class java.lang.Comparable的处理方法、Exception in thread "main" java.lang.ClassCastException的相关知识,请在本站寻找。
本文标签: