我有一段Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Options.hasShortOption(Ljava/lang/String;)Z时间试图创建一个实例DefaultParser.
我的代码:
Options options = new Options();
// option for day offset
options.addOption(new Option("d", "day", true, "Day offset. -d 7 will
request for last weeks data"));
//options.addOption("d", "day", true, "Day offset. -d 7 will request for last weeks data");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Options.hasShortOption(Ljava/lang/String;)Z
at org.apache.commons.cli.DefaultParser.handleShortAndLongOption(DefaultParser.java:491)
at org.apache.commons.cli.DefaultParser.handleToken(DefaultParser.java:243)
at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:120)
at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:76)
at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:60)
at domain.Main.main(Main.java:60)
Run Code Online (Sandbox Code Playgroud)
第60行是这样的:
CommandLine cmd …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenCSV创建充满数据库记录的 CSV 文件。我正在使用这个:
CSVWriter writer = new CSVWriter(
new OutputStreamWriter(new FileOutputStream("example.csv"),
StandardCharsets.UTF_8), ';');
Run Code Online (Sandbox Code Playgroud)
问题是,这个构造函数是@Deprecated.
该库有多个构造函数,但只有一个未被弃用。我正在使用这个构造函数:
/** @deprecated */
@Deprecated
public CSVWriter(Writer writer, char separator) {
this(writer, separator, '"');
}
Run Code Online (Sandbox Code Playgroud)
虽然我应该使用这个:
public CSVWriter(Writer writer, char separator, char quotechar, char escapechar, String lineEnd) {
super(writer, lineEnd);
this.escapechar = escapechar;
this.quotechar = quotechar;
this.separator = separator;
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定要在那里放什么,因为我不希望我的文件最终有所不同。