JVM не печатает выброшенное исключениеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JVM не печатает выброшенное исключение

Сообщение Anonymous »

Моя программная система выдает исключение. Я вижу это при отладке в Exclipse. Но выброшенное исключение не отображается в журнале. И когда я просто запускаю его, я вижу, что программа запускается и останавливается без какой-либо причины. То же самое при запуске встроенного jar-файла только из консоли, без Eclipse.
Я использую среду выполнения Java V23, скомпилированную как исходный уровень Java 21 с JDK 23 и Spring Boot 3.4.0. Ведение журнала с помощью Logback. «application.properties» устанавливает «logging.level.root=TRACE»
При открытии проекта с помощью Intellij он говорит, что мои «основные» вызовы не выполняются. Хотя он запускается при вызове из консоли, как уже говорилось, просто
было предложено выполнить простую задачу. Создали один:
  • Основной класс

    Код: Выделить всё

    import de.gombers.common.reflection.Tools;
    
    @SpringBootApplication
    @MapperScan(basePackages = "de.gombers.myhome.common.awattar.dbaccess, de.gombers.myhome.common.lng.dbaccess")
    @ComponentScan({"de.gombers"})
    public class SampleGuiMain {
    
    @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);
    }
    }
    
  • Класс выполнения команд

    Код: Выделить всё

    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
    public class SampleMainGuiRunner implements CommandLineRunner {
    
    @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);
    }
    }
    }
    
  • Переместить JFrame и JPanel в JTabbedPane

    Код: Выделить всё

    package 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
    public class SampleMainGuiFrame extends JFrame{
    
    @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);
    }
    }
    
  • JPane намеренно выдает исключение

    Код: Выделить всё

    package 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
    public class SampleMainGuiPane extends JPanel {
    
    @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");
    }
    }
    
При отладке исключения программа останавливается на этом исключении. Но при простом запуске программа неожиданно «нормально» завершается.


Подробнее здесь: https://stackoverflow.com/questions/798 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»