问题描述
|
我使用JDeveloper开发JDBC程序,现在我的程序完成了,我想单独运行它。当我尝试从命令提示符运行我的jar文件时遇到问题。
当我使用命令提示符运行我的程序时,我的程序无法连接到我的oracle数据库!但是当我使用JDeveloper IDE时,没有任何问题!
我的IDE运行以下命令:
javaw.exe -client -classpath C:\\JDeveloper\\mywork\\SourceManagmentTools\\.adf;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\classes;C:\\Oracle\\Middleware\\jdeveloper\\jdev\\lib\\jdev-rt.jar;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\ojdbc14.jar;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\quaqua-filechooser-only.jar;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\quaqua-test.jar;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\quaqua.jar;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\swing-layout.jar;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\image;C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\lipstikLF-1.1.jar -Djavax.net.ssl.trustStore=C:\\Oracle\\Middleware\\wlserver_10.3\\server\\lib\\DemoTrust.jks Main.GUI.SmRun amir
我使用以下命令:
Java -jar smt.jar amir
当我运行IDE命令时,没有任何问题,一切正常,请您帮帮我吗? (我的程序正在运行并且正在工作,只是我无法从数据库中获取数据)
当我尝试从数据库中选择时,出现以下错误...
C:\\JDeveloper\\mywork\\SourceManagmentTools\\Client\\deploy>java -jar smt.jar amir
[Ljava.lang.StackTraceElement;@7a148bd3[Ljava.lang.StackTraceElement;@51b48197[L
java.lang.StackTraceElement;@58ecb281[Ljava.lang.StackTraceElement;@25fa1bb6[Lja
va.lang.StackTraceElement;@62da3a1e[Ljava.lang.StackTraceElement;@15f48262[Ljava
.lang.StackTraceElement;@7dc05ffd[Ljava.lang.StackTraceElement;@15e232b5[Ljava.l
ang.StackTraceElement;@36baa466[Ljava.lang.StackTraceElement;@177f409c[Ljava.lan
g.StackTraceElement;@2b8bbc5a[Ljava.lang.StackTraceElement;@62facf0b[Ljava.lang.
StackTraceElement;@5ff3ce5c[Ljava.lang.StackTraceElement;@561777b1Exception in t
hread \"AWT-EventQueue-0\" java.lang.NullPointerException
at Main.Database.SmDatabase.selectCustomers(SmDatabase.java:151)
at Main.GUI.SmCreateProject.this_windowOpened(SmCreateProject.java:109)
at Main.GUI.SmCreateProject.access$000(SmCreateProject.java:30)
at Main.GUI.SmCreateProject$1.windowOpened(SmCreateProject.java:58)
at java.awt.AWTEventMulticaster.windowOpened(UnkNown Source)
at java.awt.Window.processWindowEvent(UnkNown Source)
at javax.swing.jdialog.processWindowEvent(UnkNown Source)
at java.awt.Window.processEvent(UnkNown Source)
at java.awt.Component.dispatchEventImpl(UnkNown Source)
at java.awt.Container.dispatchEventImpl(UnkNown Source)
at java.awt.Window.dispatchEventImpl(UnkNown Source)
at java.awt.Component.dispatchEvent(UnkNown Source)
at java.awt.EventQueue.dispatchEventImpl(UnkNown Source)
at java.awt.EventQueue.access$000(UnkNown Source)
at java.awt.EventQueue$1.run(UnkNown Source)
at java.awt.EventQueue$1.run(UnkNown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(UnkNown
Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(UnkNown
Source)
at java.awt.EventQueue$2.run(UnkNown Source)
at java.awt.EventQueue$2.run(UnkNown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(UnkNown
Source)
at java.awt.EventQueue.dispatchEvent(UnkNown Source)
at java.awt.EventdispatchThread.pumpOneEventForFilters(UnkNown Source)
at java.awt.EventdispatchThread.pumpEventsForFilter(UnkNown Source)
at java.awt.EventdispatchThread.pumpEventsForHierarchy(UnkNown Source)
at java.awt.EventdispatchThread.pumpEvents(UnkNown Source)
at java.awt.EventdispatchThread.pumpEvents(UnkNown Source)
at java.awt.EventdispatchThread.run(UnkNown Source)
mydatabase类的一部分:
public class SmDatabase {
Connection conn = null;
public SmDatabase() {
try {
String drivername = \"oracle.jdbc.driver.OracleDriver\";
Class.forName(drivername);
String ServerName = \"127.0.0.1\";
String ProtNumber = \"1521\";
//String sid = \"DEVP0\";
String sid = \"cms\";
String url =
\"jdbc:oracle:thin:@\" + ServerName + \":\" + ProtNumber + \":\" +
sid;
//String Username = \"PENTAVCB\";
//String Password = \"pentasoft123\";
String Username = \"cmsuser\";
String Password = \"pass\";
conn = DriverManager.getConnection(url,Username,Password);
} catch (ClassNotFoundException e) {
System.out.print(e.getStackTrace());
} catch (sqlException se) {
System.out.print(se.getStackTrace());
}
}
public Vector<String[]> selectCustomers(String command) {
ResultSet resultSet = null;
Statement statement;
Vector<String[]> customerName = new Vector<String[]>();
try {
statement = conn.createStatement();
LINE151 resultSet = statement.executeQuery(command);
while (resultSet.next()) {
String[] temp = new String[2];
temp[0] = resultSet.getString(\"V_CUST_NAME\");
temp[1] = resultSet.getString(\"V_CUST_CODE\");
customerName.add(temp);
}
resultSet.close();
statement.close();
// conn.close();
} catch (sqlException e) {
System.out.println(e.getStackTrace());
}
return customerName;
}
解决方法
e.printStackTrace();
将比produce5ѭ产生更多有用的输出。我会更改它在您的应用程序中出现的所有位置,然后重试。 DriverManager.getConnection(url,Username,Password);
很可能会引发您无法正确打印的异常,从而产生\“ [Ljava.lang.StackTraceElement ... \”垃圾。,输出在第151行指示空指针异常,该异常应指示\“ statement \”变量为空。 \“ conn \”不为null,否则将在前一行引发异常。奇怪的是,如果您具有有效的连接,则应该能够获得一条声明。行号是否可能偏离1?您可以将代码更改为:
if conn is null System.out.println(\"conn is null!!!\");
else System.out.println(\"conn is set\");
statement = conn.createStatement();
if statement is null System.out.println(\"statement is null!!!\");
else System.out.println(\"statement is set\");
resultSet = statement.executeQuery(command);
if resultSet is null System.out.println(\"resultSet is null!!!\");
else System.out.println(\"resultSet is set\");
我看不到在哪里调用SmDatabase来设置conn。是从别的地方叫吗?呼叫是否捕获异常并且不显示错误消息?,你有什么例外?如果它是ClassNotFoundException,则只需在命令中添加8。
Oracle客户端jar也可以放在传递给ѭ10的ѭ9争论的末尾。,我通过使用以下命令解决了我的问题:
java -client -classpath ojdbc14.jar;lipstikLF-1.1.jar;swing-layout.jar;smt.jar Main.GUI.SmRun rimrim
我想我们在项目中使用的那些库也需要运行,但是我不确定,我只是建议这项工作
java -client -classpath <name of you library>;<name of you library>;<name of your jar file> nameOfPackage.nameOfRunClass parameter[if any]
如果有人在此帖子中添加一些有用的信息,我将非常感谢