我试图编写一个基本程序,将其输入写入数据库。 就是这样:
package me.Cookie04.linuxoutput;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
public class LinuxOutput {
public static void main(String[] args) {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.178.29/Server?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin", "Server", "serverpw");
PreparedStatement psInsert = conn.prepareStatement("Insert into shellout (time, msg) Values(null, ?)");
ArrayList<Character> buffer = new ArrayList<>();
while(true) {
int r = System.in.read();
if(r != -1) {
char c = (char) r;
if(!String.valueOf(c).matches(".")) {
StringBuilder out = new StringBuilder();
for(char a : buffer) {
out.append(a);
}
buffer.clear();
psInsert.setString(1, out.toString());
psInsert.executeUpdate();
System.out.println(out);
} else {
buffer.add(c);
}
}
}
} catch(SQLException | IOException e) {
e.printStackTrace();
}
}
}
我创建了工件,如下所示: 项目结构,工件,+,JAR,从具有依赖性的模块中选择主类,然后选择提取到目标JAR
现在,当我在IntelliJ中运行它时,它可以正常工作,但是当我使用工件构建jar时,jar失败,并显示以下堆栈跟踪信息:
java.sql.SQLException:找不到适用于jdbc的驱动程序:mysql://192.168.178.29/Server?useUnicode = true&useJDBCCompliantTimezoneShift = true&useLegacyDatetimeCode = false&s> erverTimezone = Europe / Berlin 在java.sql / java.sql.DriverManager.getConnection(未知源) 在java.sql / java.sql.DriverManager.getConnection(未知源) 在我身上.Cookie04.linuxoutput.LinuxOutput.main(LinuxOutput.java:10)
编辑: 该问题的答案对我不起作用,我还使用了其他连接器(我希望它足够独特)
编辑2: 我只是尝试用eclipse编译相同的项目,并且最终的jar可以工作,但是我仍然希望能够使用IntelliJ进行编译。