- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果我使用调试 (Eclipse) 运行以下代码 (JAVAfx),则会出现异常。正常运行工作正常。我也在服务器运行时运行它,并且服务器识别出这个客户端。
这是异常(exception):
Exception in Application start method
djava.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$150(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda$50/24970616.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at javaNetFinal.Client.delColumnPane(Client.java:122)
at javaNetFinal.Client.updateStage(Client.java:333)
at javaNetFinal.Client.start(Client.java:75)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$156(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda$85/17408914.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$169(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/16153462.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$167(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$49/32223832.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$168(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda$48/20929065.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$144(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda$37/29854731.run(Unknown Source)
... 1 more
Exception running application javaNetFinal.Client
代码:
public class Client extends Application {
DynamicTable tbl = new DynamicTable(0,null,null);
PaneQuery paneQuery;
private Socket socket;
// Input and output streams from/to server
private ObjectInputStream fromServer;
private DataOutputStream toServer;
private String host = "localhost";
private BorderPane viewPane = new BorderPane(); // include: upperPaneOnViewPane (Queries, Filter) Table, edit
private BorderPane topViewPane = new BorderPane();
private BorderPane upperPaneOnViewPane = new BorderPane(); // include: Queries, Filter
private int columnCount;
private Student[] rows;
private String[] columnName;
public void start(Stage primaryStage) {
connectToServer();
refreshDefultTable();
BorderPane mainPane = new BorderPane();
// Top View
topViewPane.setPadding(new Insets(5,5,30,5));
topViewPane.setLeft(initRefreshTable()); // position of the first part in the top pane
//topViewPane.setStyle("-fx-border-color: black;");
// Center View
upperPaneOnViewPane.setPadding(new Insets(5,5,10,5));
//upperPaneOnViewPane.setLeft(paneQuery.createPane()); // Queries
upperPaneOnViewPane.setRight(setPaneFilterOnTable()); // Filter
viewPane.setTop(upperPaneOnViewPane); // Queries + Filter
viewPane.setBottom(setPaneEditTable()); // Edit Table
mainPane.setPadding(new Insets(5,5,5,5));
mainPane.setTop(topViewPane);
mainPane.setCenter(viewPane);
updateStage();
Scene scene = new Scene(mainPane, 700, 250);
primaryStage.setMaximized(true);
primaryStage.setTitle("----"); // Set the window title
primaryStage.setScene(scene); // Place the scene in the window
primaryStage.show(); // Display the window
primaryStage.setAlwaysOnTop(true);
}
public Pane initRefreshTable() {
GridPane initRefreshPane = new GridPane();
initRefreshPane.setVgap(4);
initRefreshPane.setHgap(10);
initRefreshPane.setPadding(new Insets(5,5,5,5));
Button btnInitial= new Button("Init DataBase");
btnInitial.setOnAction(e-> {
new ImportMySQLDB();
refreshDefultTable();
updateStage();
});
initRefreshPane.add(btnInitial,0,0);
Button btnRefresh= new Button("Refresh Table View");
btnRefresh.setOnAction(e-> {
System.out.println("dd");
refreshDefultTable();
// String sql = "SELECT * FROM STUDENT";
// sendAndGetFromServer(sql);
});
initRefreshPane.add(btnRefresh,1,0);
Label lblLastSave = new Label("Last Saved: ");
initRefreshPane.add(lblLastSave,0,1);
Label lblDateSave = new Label(new Date().toString());
initRefreshPane.add(lblDateSave,1,1);
return initRefreshPane;
}
public Pane delColumnPane() {
GridPane delColumnPane = new GridPane();
delColumnPane.setVgap(4);
delColumnPane.setHgap(10);
delColumnPane.setPadding(new Insets(5,5,5,5));
ObservableList<String> columnList =
FXCollections.observableArrayList(this.columnName.length>0? Student.getHeadField(this.columnName):null);
columnList.remove("ID");
ComboBox<String> cbColumnToDel = new ComboBox<String>(columnList);
Button btnDelColumn= new Button("Delete");
delColumnPane.add(cbColumnToDel, 0, 0);
delColumnPane.add(btnDelColumn,1,0);
cbColumnToDel.setPromptText("delete column...");
cbColumnToDel.setOnAction(e ->{
btnDelColumn.setDisable(false);
});
btnDelColumn.setDisable(true);
btnDelColumn.setOnAction(e ->{
// showDialog("\n\n Are you sure you want delete column: "+cbColumnToDel.getValue()+"?");
System.out.println(tbl.toString());
String sql = "ALTER TABLE STUDENT";
sql=sql +" DROP COLUMN "+Student.getField(cbColumnToDel.getValue());
sendAndGetFromServer(sql);
System.out.println(tbl.toString());
columnList.remove(Student.getField(cbColumnToDel.getValue()));
cbColumnToDel.setPromptText("delete column...");
btnDelColumn.setDisable(true);
updateStage();
System.out.println(tbl.toString());
});
return delColumnPane;
}
public Pane setPaneFilterOnTable() {
GridPane filterTable = new GridPane();
filterTable.setVgap(4);
filterTable.setHgap(10);
filterTable.setPadding(new Insets(5,5,5,5));
Label lblSort = new Label("Sort Columns By:");
filterTable.add(lblSort, 0, 0);
ObservableList<String> columnOptions =
FXCollections.observableArrayList(
//tbl.getColumnName()
);
ComboBox<String> cbFirstChoiseColumn = new ComboBox<String>(columnOptions);
cbFirstChoiseColumn.setPromptText("Select first column...");
cbFirstChoiseColumn.setPrefWidth(210);
filterTable.add(cbFirstChoiseColumn, 1, 0);
ComboBox<String> cbSecondChoiseColumn = new ComboBox<String>(columnOptions);
cbSecondChoiseColumn.setPromptText("Select second column...");
cbSecondChoiseColumn.setPrefWidth(210);
cbSecondChoiseColumn.setDisable(true);
cbFirstChoiseColumn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
cbSecondChoiseColumn.setDisable(false);
}
});
filterTable.add(cbSecondChoiseColumn, 1, 1);
Label lblOrder = new Label("Order By:");
filterTable.add(lblOrder, 2, 0);
ObservableList<String> orderOptions =
FXCollections.observableArrayList(
"▲ Ascending", "▼ Descending" );
ComboBox<String> cbOrder = new ComboBox<String>(orderOptions);
cbOrder.setPromptText("Ascending");
cbOrder.setPrefWidth(150);
filterTable.add(cbOrder, 3, 0);
return filterTable;
}
public Pane setPaneEditTable() {
GridPane editTable = new GridPane();
editTable.setVgap(4);
editTable.setHgap(10);
editTable.setPadding(new Insets(15,5,15,5));
RadioButton rbEditRow = new RadioButton();
rbEditRow.setText("Edit");
editTable.add(rbEditRow,0,0);
rbEditRow.setSelected(true);
RadioButton rbAddRow = new RadioButton();
rbAddRow.setText("Add");
editTable.add(rbAddRow,1,0);
RadioButton rbDeleteRow = new RadioButton();
rbDeleteRow.setText("Delete");
editTable.add(rbDeleteRow,2,0);
rbEditRow.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
rbAddRow.setSelected(false);
rbDeleteRow.setSelected(false);
}
});
rbAddRow.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
rbEditRow.setSelected(false);
rbDeleteRow.setSelected(false);
}
});
rbDeleteRow.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
rbEditRow.setSelected(false);
rbAddRow.setSelected(false);
}
});
Button btnApply= new Button("Apply");
editTable.add(btnApply,0,1);
return editTable;
}
private void connectToServer(){
try{
// Create a socket to connect to the server
socket = new Socket(host, 8000);
// Create an output stream to send data to the server
toServer = new DataOutputStream(socket.getOutputStream());
// Create an input stream to receive data from the server
fromServer = new ObjectInputStream(socket.getInputStream());
}
catch (Exception ex){
ex.printStackTrace();
}
}
private void sendAndGetFromServer(String sqlQuery){
new Thread(() ->{
try{
System.out.println("a1");
// Send sql query to server
toServer.writeUTF(sqlQuery);
// Get notification from the server
this.rows = (Student[])fromServer.readObject();
this.columnCount= fromServer.readInt();
this.columnName= (String[])fromServer.readObject();
setRowsInTable();
}
catch(SocketException ex){
try{
socket.close();
}
catch (IOException e){
ex.printStackTrace();
}
}
catch (Exception ex){
ex.printStackTrace();
}
}).start();
System.out.println("end");
}
public void setRowsInTable(){
tbl = new DynamicTable(columnCount, rows, columnName);
tbl.buildTable();
Platform.runLater(new Runnable() {
@Override
public void run() {
viewPane.setCenter(tbl);
}
});
}
public void refreshDefultTable(){
String sql = "SELECT * FROM STUDENT";
sendAndGetFromServer(sql);
}
public void updateStage(){
topViewPane.setRight(delColumnPane()); // position of the second part in the top pane
viewPane.setCenter(tbl); // Table
}
public static void main(String[] args) {
launch(args);
}
}
有什么问题吗?我需要调试!
最佳答案
问题是,为了在“变量” View 中实际显示一些内容(或者在您的 IDE - Eclipse 中调用的任何内容),您的调试器通常会在对象上使用 toString() 方法。
在像您这样的情况下,调试会导致 NPE,原因通常是您的一个对象是以非原子方式创建的,并且尚未准备好在您定义的断点处使用。例如,这可能是在使用对象之前需要设置的某些字段。但是由于您的调试器已经开始“使用”该对象,因此您遇到了麻烦。
这种错误只能通过正确稳健地实现 toString() 来修复,该实现考虑到对象(至少在最初)处于不一致状态的事实。
关于JAVA - 仅当我使用调试运行它时才会出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28904706/
昨晚我因为这个问题脑子崩溃了。在确保没有来 self 的 eclipse 错误检查的明显错误之后,我开始调试我的程序。顺便说一下,我正在使用 Jre7。无论如何,每次我进入我的类调用(我们称之为“a”
(前言:我对 C/C++ 还很陌生,我真的不知道 native 代码中的调试实际上是如何工作的。) 一些消息来源说 gdb 和 lldb 可以调试 any program compiled to ma
我正在尝试从 Visual Studio 2012 外部调试 T4Scaffolding.Core Nuget 包。我使用的是安装了 Powershell 3.0 的 Powershell ISE,并
如何调试汇编代码?我在 Linux 上使用 gdb。我知道我可以看寄存器。有哪些调试汇编代码的方法? 最佳答案 您当然可以使用 breakpoints就像 C 或任何其他编译语言一样。 This ar
如何在每次通话时打印列表或 haskell 中的内容,例如: funct a list = funct (a + 1) (a : list) print list her
让我用我对 Makefiles 或 make 知之甚少的评论作为这个问题的前缀。 有一个非常大的项目,每晚自动构建。它以 Debug 和 Release 模式构建,Debug 用于 Valgrind
我正在创建一个计算每周工资的程序,那么任何加类工资都是该周正常工资的 1.5 倍。我的代码如下: #include int main() { double payrate; double h
我使用的是 Visual Studio 2010 Express Developer 版本。开发网站。我在我的 .aspx 页面中使用 JavaScript。 如何在 Javascript 中放置断点
我最近开始修补 Project Euler 问题,并尝试用 Javascript 解决它们。这样做我往往会产生许多无限循环,现在我想知道是否有比终止 Firefox 或 Chrome 中的选项卡更好的
有没有办法在程序执行期间生成一个交互式 python 控制台(最好是 iPython)而不暂停主程序并且能够检查和修改程序变量?类似于浏览器为 JavaScript 提供的功能。 我知道 pdb.se
我正在使用 FFmpeg @ Android 并希望能够进入 FFmpeg 代码(Eclipse + Seqouya),同时编译 FFmpeg 我使用 --disable-stripping --en
我从使用互操作调用 win32 api 函数的 .net 进程中得到一个异常。 我有一个调试器,我想查看 LastError 的值。 是否可以从 Visual Studio 调试器中查看 LastEr
我正在尝试通过 VBA 创建一个宏,以在 IE 的多个选项卡中打开一组指定的链接。目前我正在使用下面的代码,如果我试图打开 3 个或更少的选项卡,它大部分时间都可以工作。任何超过 3 的代码都会在“N
好的,这似乎是一个愚蠢的问题,因为 MonoDevelop 越来越成熟,所以我确定我只是想念它,但我环顾四周,所有关于这个主题的问题似乎都是关于远程调试或 Mac 上的调试。 我使用的是 Ubuntu
如何调试 Rscripts是从命令行运行的? 我目前正在使用 getopt传递命令行选项的包,当有错误时,我很难: 看看到底出了什么问题; 在 R 中交互式调试(因为脚本需要命令行选项。) 有没有人有
支持 PDF 和网络上的信息很少。我碰巧在博客中看到一篇文章,提到 $.write() 或 $.writeln() 将向 javascript 控制台写入一个字符串。相当有用。有谁知道这个 $ 对象是
PyCharm 1.5 中是否可以使用 Firefox 和 Chrome 支持的 JavaScript 调试? 如果是这样,它能否与 Python/Django 调试器一起有效运行? 如果没有,有没有
我确定这以前发生在人们身上,某些东西在 Debug模式下工作,你在发布时编译,但有些东西坏了。 这发生在我在嵌入式 XP 环境中工作时,我发现最好的方法确实是编写一个日志文件来确定它会出错的地方。 您
我目前正在为即将到来的项目评估 Flow3。 AOP 模式和依赖注入(inject)将非常适合我们的目的。 现在我想不通的是如何在 Controller Action 中调试一些结果。 public
最初,我有一个包含测试服务器的 Django 应用程序。要调试此设置,我只需添加 import pdb; pdb.set_trace()代码中的任何位置,并且有一个断点将我扔到终端中的交互式调试器中(
我是一名优秀的程序员,十分优秀!