为什么 Eclipse 说“存在错误”,但在控制台中却什么也没显示?

2022-09-04 00:45:52

我正在使用Eclipse构建一个程序,当我去运行它时,它说“错误存在”,无论如何我运行它,控制台中没有显示任何错误,应用程序运行一个空白屏幕。这是为什么呢?

附加信息:我最近一直在尝试更改我以前的布局,从非常粗糙的形式到使用GridBagLayout,但是我不是很熟悉使用布局。我强烈怀疑问题出在我的布局上,或者围绕着我的布局,因为在我尝试进行更改之前,程序已经正常运行。

以下是我的两个主要类,涉及布局,很抱歉它很乱,我注释掉了许多适用于上一个布局的行,以防我必须恢复到它:

import java.awt.*;
import java.sql.SQLException;
import java.util.LinkedList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.plaf.ColorUIResource;

import java.sql.*;

public class MainDisplay extends JFrame {

static Toolkit tk = Toolkit.getDefaultToolkit();
static int Width = (int)tk.getScreenSize().getWidth();
static int Height = (int)tk.getScreenSize().getHeight();

//public static JFrame frame = new JFrame();
public static JPanel pane = new JPanel();


private static String targetIpHolder;
private static String attackerIpHolder;
private static int threatLevelHolder; 
private static String numAttacksHolder;

public static void main (String[] args) {
new MainDisplay();

}

public MainDisplay() {


setPreferredSize(new Dimension(Width, Height));
setLocation(0,0);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setUndecorated(true);



//pane.setLayout(gridBag);
setLayout(new BorderLayout());
//add(pane, BorderLayout.CENTER);
pane.setBounds(0,0, Width, Height);

pack();
setVisible(true);

ThreatPanel Run = new ThreatPanel();
Database Data = new Database();

//Create Connection to Database and run query

Data.createConnection();
Data.getData();
    try {
        while(Data.rslt.next()){
            Data.process();
            targetIpHolder = Data.getTarget();
            attackerIpHolder = Data.getAttacker();
            threatLevelHolder = Data.getThreat_level();
            numAttacksHolder = Data.getNum_attack();
            //System.out.println(targetIpHolder);
            //System.out.println(attackerIpHolder);
            Run.ShowThreats();
            try {
                Thread.sleep(1000*1); 
            } catch (InterruptedException e) {

                e.printStackTrace();
            }

        }
    } catch (SQLException e) {

        e.printStackTrace();
    }



}

public static String getTargetIpHolder(){
return targetIpHolder;
}
public static String getAttackerIpHolder(){
return attackerIpHolder;
}
public static int getThreatLevelHolder(){
return threatLevelHolder;
}
public static String getNumAttacks(){
return numAttacksHolder;
}

}

import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.image.RenderedImage;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;


import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;



public class ThreatPanel {

JPanel BackPanel = new JPanel();
//JPanel HeadingBreak = new JPanel();
JPanel DarkPanel = new JPanel();
//JPanel HeadingBreak = new JPanel();
//JPanel HorizontalSplit1 = new JPanel();
//JPanel HorizontalSplit2 = new JPanel();
//JPanel VerticalSplit = new JPanel();

public GridBagLayout gridBag = new GridBagLayout();
public GridBagConstraints gbc = new GridBagConstraints();


final int TEST = 0;
final int TEST2 = 100;
final int TEST3 = 200;

private String city;
private String region;
private String latitude;
private String longitude;
private Image img;
private ImageIcon icon;

Color severeColor = new Color(225,102,00);

URL geoLocRetriever;


//Target area declarations. 
String Client = "CLIENT"; //filler
JLabel Target = new JLabel("TARGET");
JLabel ClientLabel = new JLabel(Client); //filler
JLabel TargetServerData;
JLabel ServerID = new JLabel("SERVER ID");

//Attacker area declarations.
JLabel Attacker = new JLabel("ATTACKER");
JLabel AttackerData;
JLabel GeoLocData;
JLabel GeoLocImg;
JLabel GeoLocLabel = new JLabel("GEO LOCATION");

//Threat Level area declarations.
JLabel ThreatLevel = new JLabel("THREAT");
JLabel ThreatLevelData;

//Number of Attacks declarations
JLabel NumberOfAttacks = new JLabel("ATTACKS");
JLabel NumberOfAttacksData;


public ThreatPanel()
{
DarkPanel.setLayout(gridBag);

TargetServerData = new JLabel();
AttackerData = new JLabel();
ThreatLevelData = new JLabel();
NumberOfAttacksData = new JLabel();
GeoLocData = new JLabel();
GeoLocImg = new JLabel();


BackPanel.setLayout(null);
BackPanel.setBackground(Color.WHITE);
BackPanel.setBounds(0,0, MainDisplay.Width, MainDisplay.Height);
BackPanel.setOpaque(true);
/*
HeadingBreak.setBackground(Color.WHITE);
HeadingBreak.setBounds(0, 80, MainDisplay.Width, 3);
HeadingBreak.setOpaque(true);
*/
/*
HorizontalSplit1.setBackground(Color.WHITE);
HorizontalSplit1.setBounds(0, MainDisplay.Height/2, MainDisplay.Width, 3);
HorizontalSplit1.setOpaque(true);
*/
/*
HorizontalSplit2.setBackground(Color.WHITE);
HorizontalSplit2.setBounds(0, MainDisplay.Height/2+80, MainDisplay.Width, 3);
HorizontalSplit2.setOpaque(true);
*/
/*
VerticalSplit.setBackground(Color.WHITE);
VerticalSplit.setBounds((int)(MainDisplay.Width/1.5), 0, 3, MainDisplay.Height);
VerticalSplit.setOpaque(true);
*/
//Target area settings. 

Target.setFont(new Font("Arial", Font.BOLD, 85));
Target.setForeground(Color.GREEN);
Target.setBounds(0, 0, ((int)(MainDisplay.Width/1.5)-3), 75);
Target.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(Target, gbc);

ClientLabel.setForeground(Color.WHITE);
ClientLabel.setFont(new Font("Arial", Font.BOLD, 100));
ClientLabel.setBounds(0, 115, ((int)(MainDisplay.Width/1.5)-3), 95);
ClientLabel.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(ClientLabel, gbc);


TargetServerData.setForeground(Color.WHITE);
TargetServerData.setFont(new Font("Arial", Font.BOLD, 120));
TargetServerData.setBounds(0, 230, ((int)(MainDisplay.Width/1.5)-3), 95);
TargetServerData.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(TargetServerData, gbc);

ServerID.setForeground(Color.WHITE);
ServerID.setFont(new Font("Arial", Font.BOLD, 120));
ServerID.setBounds(0, 230, ((int)(MainDisplay.Width/1.5)-3), 95);
ServerID.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 3;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(ServerID, gbc);

Attacker.setFont(new Font("Arial", Font.BOLD, 85));
Attacker.setForeground(Color.RED);
Attacker.setBounds(0, (MainDisplay.Height/2)+3, ((int)(MainDisplay.Width/1.5)-3), 75);
Attacker.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 4;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(Attacker, gbc);

AttackerData.setForeground(Color.RED);
AttackerData.setFont(new Font("Arial", Font.BOLD, 70));
AttackerData.setBounds(0, ((int)(MainDisplay.Height/1.5)-3), ((int)(MainDisplay.Width/1.5)-3), 75);
AttackerData.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 5;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(AttackerData, gbc);

GeoLocData.setFont(new Font("Arial", Font.BOLD, 70));
GeoLocData.setForeground(Color.RED);
GeoLocData.setBounds(0, (int)(MainDisplay.Height/1.2), ((int)(MainDisplay.Width/1.5)-3), 75);
GeoLocData.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 6;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(GeoLocData, gbc);

ThreatLevel.setFont(new Font("Arial", Font.BOLD, 85));
ThreatLevel.setForeground(Color.GREEN);
ThreatLevel.setBounds(725, 0, ((int)(MainDisplay.Width/1.5)-3), 75);
ThreatLevel.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(ThreatLevel, gbc);

ThreatLevelData.setFont(new Font("Arial", Font.BOLD, 100));
ThreatLevelData.setBounds(725, 105, ((int)(MainDisplay.Width/1.5)-3), 95);
ThreatLevelData.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 1;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(ThreatLevelData, gbc);


NumberOfAttacks.setFont(new Font("Arial", Font.BOLD, 85));
NumberOfAttacks.setForeground(Color.RED);
NumberOfAttacks.setBounds(725, (MainDisplay.Height/2)+3, ((int)(MainDisplay.Width/1.5)-3), 75);
NumberOfAttacks.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 1;
gbc.gridy = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(NumberOfAttacks, gbc);

NumberOfAttacksData.setFont(new Font("Arial", Font.BOLD, 85));
NumberOfAttacksData.setForeground(Color.RED);
NumberOfAttacksData.setBounds(725, (int) ((MainDisplay.Height/1.5)), ((int)(MainDisplay.Width/1.5)-3), 75);
NumberOfAttacksData.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 1;
gbc.gridy = 3;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(NumberOfAttacksData, gbc);

GeoLocLabel.setFont(new Font("Arial", Font.BOLD, 85));
GeoLocLabel.setForeground(Color.RED);
GeoLocLabel.setBounds(0, (MainDisplay.Height/2)+3, ((int)(MainDisplay.Width/1.5)-3), 75);
GeoLocLabel.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 1;
gbc.gridy = 4;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(GeoLocLabel, gbc);

GeoLocImg.setBounds(1050, 590, 300, 300);
GeoLocImg.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 1;
gbc.gridy = 5;
gbc.gridheight = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
DarkPanel.add(GeoLocData, gbc);

//Remaining settings.
/*
//DarkPanel.setLayout(null);
//DarkPanel.setBackground(Color.BLACK);
//DarkPanel.setBounds(3, 3, ((MainDisplay.Width)-6), ((MainDisplay.Height)-6));
//DarkPanel.setOpaque(true);
////DarkPanel.add(Target);
//DarkPanel.add(HeadingBreak);
//DarkPanel.add(VerticalSplit);
//DarkPanel.add(HorizontalSplit1);
//DarkPanel.add(HorizontalSplit2);
DarkPanel.add(ClientLabel);
DarkPanel.add(TargetServerData);
DarkPanel.add(ThreatLevel);
DarkPanel.add(ThreatLevelData);
DarkPanel.add(Attacker);
DarkPanel.add(AttackerData);
DarkPanel.add(NumberOfAttacks);
DarkPanel.add(NumberOfAttacksData);
DarkPanel.add(GeoLocData);
DarkPanel.add(GeoLocImg);
*/

BackPanel.add(DarkPanel);

MainDisplay.pane.add(BackPanel, new Integer(0), 0);

}

public void getGeoLoc()
{
String locHolder;
try {
    geoLocRetriever = new URL("http://ip-api.com/line/*******"); //+ MainDisplay.getAttackerIpHolder()
} catch (MalformedURLException e) {
    e.printStackTrace();
}

InputStream stream = null;
try {
    stream = geoLocRetriever.openStream();
} catch (IOException e1) {
    e1.printStackTrace();
}
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
if (stream != null) try {
    final BufferedInputStream input = new BufferedInputStream(stream);
    final byte[] reader = new byte[16384];
    int r = 0;
    while ((r = input.read(reader, 0, 16384)) != -1)
        buffer.write(reader, 0, r);
    buffer.flush();
} catch(IOException e) {
    e.printStackTrace();
} finally {
    if(stream != null) try {
        stream.close();
    } catch(IOException e) {
        e.printStackTrace();
    }
}


locHolder = new String(buffer.toByteArray());
String[] lines = locHolder.split("\n");
//System.out.print(lines[5]);

city = lines[5];
region = lines[4];
latitude = lines[7];
longitude = lines[8];

String temp;
temp="https://maps.googleapis.com/maps/api/staticmap?center=" +latitude +"," +longitude +"&zoom=7&size=300x300&markers=color:red|label:A|" +latitude +"," +longitude +"&sensor=false";
URL mapurl = null;
try {
    mapurl = new URL(temp);
} catch (MalformedURLException e) {
    e.printStackTrace();
}
try {
    img = ImageIO.read(mapurl);
} catch (IOException e) {
    e.printStackTrace();
}
icon = new ImageIcon(img);  
}

public void ShowThreats(){

    String targetEnd = MainDisplay.getTargetIpHolder();     
    TargetServerData.setText(targetEnd);

    String attackerEnd = MainDisplay.getAttackerIpHolder();
    AttackerData.setText(attackerEnd);

    getGeoLoc();
    String geoLocEnd = city + "," + region;
    GeoLocData.setText(geoLocEnd);
    GeoLocImg.setIcon(icon);


    int threatLevelEnd = MainDisplay.getThreatLevelHolder();
    //System.out.println(threatLevelEnd);
    if ((threatLevelEnd > TEST ) && (threatLevelEnd < TEST2)){
        ThreatLevelData.setText("WARNING");
        ThreatLevelData.setForeground(Color.YELLOW);
    }
    else if ((threatLevelEnd > TEST2 ) && (threatLevelEnd < TEST3)){
        ThreatLevelData.setText("SEVERE");
        ThreatLevelData.setForeground(severeColor);
    }
    else if (threatLevelEnd > TEST3){
        ThreatLevelData.setText("CRITICAL");
        ThreatLevelData.setForeground(Color.RED);
    }
    else{
        ThreatLevelData.setText("ERROR");
        ThreatLevelData.setForeground(Color.PINK);
    }

    String numAttacksEnd = MainDisplay.getNumAttacks();
    NumberOfAttacksData.setText(numAttacksEnd);
    //System.out.println(numAttacksEnd);

}

}

答案 1

转到窗口 --> 显示视图 --> 常规 -->问题,您将看到错误列表。在我的情况下 - 我在构建路径中有一个错误的源文件夹。配置生成路径解决了“项目中存在错误”问题。在“问题”视图中 - rt单击错误并快速修复 - 这解决了问题。


答案 2

这可能是 JRE 错误。右键单击项目根目录,然后选择首选项。来到已安装的 JRE 并查找错误。此外,重新生成项目并检查 ,如 @Ted Hopp 的注释中所建议的那样。Window > Show View > Error Log