JVM druckt die ausgelöste Ausnahme nicht aus [geschlossen]Java

Java-Forum
Anonymous
 JVM druckt die ausgelöste Ausnahme nicht aus [geschlossen]

Post by Anonymous »

Mein Programmsystem löst eine Ausnahme aus. Ich kann es sehen, wenn ich es unter Exclipse debugge. Die ausgelöste Ausnahme wird jedoch nicht im Protokoll angezeigt. Und wenn ich es einfach starte, sehe ich, wie das Programm ohne Grund startet und stoppt. Das Gleiche gilt, wenn die erstellte JAR-Datei nur von der Konsole aus ausgeführt wird, ohne Eclipse.
Ich verwende Java Runtime V23, kompiliert als Java 21 auf Quellebene mit JDK 23 und Spring Boot 3.4.0. Protokollierung mit Logback. „application.properties“ setzt „logging.level.root=TRACE“
Beim Öffnen des Projekts mit Intellij heißt es, dass meine „main“-Aufrufe nicht ausführbar sind. Obwohl es, wie gesagt, beim Aufruf über die Konsole ausgeführt wird, wurde es einfach nach einer einfachen Aufgabe gefragt. Habe eine erstellt:
  • Hauptklasse
    import de.gombers.common.reflection.Tools;
    @SpringBootApplication
    @MapperScan(basePackages = "de.gombers.myhome.common.awattar.dbaccess, de.gombers.myhome.common.lng.dbaccess")
    @ComponentScan({"de.gombers"})
    öffentliche Klasse SampleGuiMain {

    Code: Select all

     @SuppressWarnings("unused")
    private static final Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName());
    
    private static final String[] request = new String[] {
    "SampleGuiMainRunner"
    };
    
    public static void main(String[] args) {
    ApplicationContext contexto = new SpringApplicationBuilder(SampleGuiMain.class)
    .web(WebApplicationType.NONE)
    .headless(false)
    .run(request);
    }
    
  • Command Runner Class
    package de.gombers.myhome.mygui;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.stereotype.Component;
    import de.gombers.common.reflection.Tools;
    @Component
    öffentliche Klasse SampleMainGuiRunner implementiert CommandLineRunner {

    Code: Select all

     @SuppressWarnings("unused")
    private final static Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName());
    
    @Autowired
    private final SampleMainGuiFrame mainFrame;
    
    @Autowired
    public SampleMainGuiRunner(final SampleMainGuiFrame mainFrame) {
    this.mainFrame=mainFrame;
    }
    
    @Override
    public void run(String...  args) throws Exception {
    if (!args[0].equals("SampleGuiMainRunner")) {
    LOGGER.debug("Nothing requested");
    return;
    }
    
    try {
    mainFrame.process();
    } catch (Exception e) {
    LOGGER.error("", e);
    }
    }
    
  • Swing JFrame fügt JPane zu einem TabbedPane hinzu
    Paket de.gombers.myhome.mygui;
    import java.awt.BorderLayout;
    import java.util.concurrent.ExecutorService;
    import javax.swing.JFrame;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
    import javax.swing.WindowConstants;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import de.gombers.common.properties.MyComponentListener;
    import de.gombers.common.reflection.Tools;
    import de.gombers.myhome.common.environment.GuiProperties;
    import de.gombers.myhome.mygui.environment.MyHomeGuiProperties;
    import de.gombers.myhome.mygui.lng.LngConsumptionPane;
    @Component
    öffentliche Klasse SampleMainGuiFrame erweitert JFrame{

    Code: Select all

     @SuppressWarnings("unused")
    private final static Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName());
    
    @Autowired
    private final SampleMainGuiPane myPane;
    private JTextField messageBox;
    protected final JTabbedPane tabbedPanes = new JTabbedPane();
    
    @Autowired
    public SampleMainGuiFrame(final SampleMainGuiPane myPane) {
    super("MySample");
    this.myPane=myPane;
    }
    
    public void process() {
    this.messageBox  = new JTextField();
    this.messageBox.setEditable(false);
    
    tabbedPanes.addTab("Sample", null, myPane, "my sample");
    
    this.getContentPane().add(tabbedPanes, BorderLayout.CENTER);
    
    this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    String panelId=this.getClass().getSimpleName();
    
    this.setVisible(true);
    }
    
  • Der JPane wirft eine Ausnahme nach Zweck
    Paket de.gombers.myhome.mygui;
    import java.awt.Color;
    import java.text.DecimalFormat;
    import java.util.List;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import com.brunchboy.util.swing.relativelayout.RelativeLayout;
    import com.brunchboy.util.swing.relativelayout.RelativeLayoutHelper;
    import de.gombers.common.reflection.Tools;
    import de.gombers.myhome.common.dataprovider.lambda.COPLambdaCalculator;
    import de.gombers.myhome.common.dataprovider.lambda.COPNibeCalculator;
    import de.gombers.myhome.common.dataprovider.lambda.COPSuperCalculator;
    import de.gombers.myhome.common.dataprovider.lambda.COPViessmanCalculator;
    import de.gombers.myhome.common.environment.GuiProperties;
    import de.gombers.myhome.lng.common.bindings.dto.AIOTEResultsMeterData;
    import de.gombers.myhome.mygui.environment.MyHomeGuiProperties;
    @Component
    öffentliche Klasse SampleMainGuiPane erweitert JPanel {

    Code: Select all

     @SuppressWarnings("unused")
    private final static Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName());
    
    private int top=10, left=10;
    private int colWidth = 50;
    
    private final JTextField messageBox;
    
    @Autowired
    public SampleMainGuiPane() throws Exception  {
    LOGGER.info("Have been invoked");
    this.messageBox  = new JTextField();
    messageBox.setForeground(Color.BLACK);
    throw new Exception("by purpose thrown");
    }
    
    }
Beim Debuggen wird das Programm bei der Ausnahme angehalten. Aber wenn das Programm gerade läuft, kommt es zu einem unerwarteten „normalen“ Ende.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post