Java代码String类型不匹配且主类找不到main方法怎么解决?
问题原因及解决方案
核心错误根源
两个报错都来自错误的导包语句:import com.sun.org.apache.xpath.internal.operations.String;
java.lang.String是Java默认提供的字符串类,默认全局导入,无需手动声明导入。额外导入的com.sun.org.apache.xpath.internal.operations.String是非标准的字符串操作类,导致代码中所有String声明默认指向该类,和JDK自带的java.lang.String类型不匹配,抛出类型不兼容错误。- JVM识别主类的标准是方法签名完全匹配
public static void main(java.lang.String[] args),代码中main方法的参数String[]实际指向导入的错误类,类型不符合JVM要求,因此提示找不到main方法。
修复步骤
- 删除两行无用导入语句:
import com.sun.org.apache.xpath.internal.operations.String; import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
第二行WSDLOutput属于全代码未使用的冗余导入,一并删除即可。
- 修复
WriteToFile方法中的错误代码:原代码中bookTitles.get(String)语法错误,List.get()方法需要传入int类型的索引参数,若要将整个书籍列表写入文件,可直接把列表转成字符串写入,修改后的代码参考:
public static void WriteToFile() { try { FileWriter myWriter = new FileWriter(myFile.getName(), true); System.out.println("This is the contents of the file:"); myWriter.write("\n"); // 换行分隔内容,比空字符串更合理 myWriter.write(bookTitles.toString()); // 写入整个列表的内容 myWriter.close(); System.out.println("Successfully wrote to the file."); } catch (IOException e) { System.out.println("An error occurred."); e.printStackTrace(); } }
- 补充
WriteToFile方法调用:当前main方法中没有调用写入文件的逻辑,书籍列表只会打印在控制台不会写入文件,可在main方法的try代码块中,循环结束、打印完titleList之后添加一行WriteToFile();触发写入逻辑。
内容的提问来源于stack exchange,提问作者FourEights
相关产品推荐
相关产品推荐

