Eclipse Java File FileInputStream vs Input Stream al cargar el archivo de fuente [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo acceder a un archivo txt en un jar con FileInputStream? 3 respuestas

Estoy revisando algunos tutoriales y tengo un problema al cargar el archivo de fuente en Eclipse Java Project. Intenté muchas soluciones sugeridas aquí en SO, y finalmente encontré una (usando FileInputStream) que funciona para mí, pero no cuando el proyecto se exporta como JAR ejecutable. Por otro lado, usar la misma estructura de directorio en el otro proyecto donde cargo los iconos funciona, por lo que supongo que el problema no está en la ruta en sí.

Aquí está la estructura del directorio:

Aquí está el código:

package examples;

import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Test01 extends JPanel {

    String text = "Free the bound periodicals";
    Font fon;
    FileInputStream fis;
    // InputStream fis;

    @Override
    public void paintComponent(Graphics comp) {
        Graphics2D comp2D = (Graphics2D) comp;


        // This (for another project) works both in Eclipse and in runnable  JAR
        // ImageIcon loadIcon = new ImageIcon(getClass().getResource("/examples/resources/load.gif"));

        // This (quite contrary to many SO suggestions) doesn't work in Eclipse for this project, why?
        // fis = this.getClass().getResourceAsStream("/examples/resources/vedrana.ttf");

        // This (quite contrary to many SO suggestions) doesn't work in Eclipse for this project, why?
        // fis = this.getClass().getClassLoader().getResourceAsStream("/examples/resources/verdana.ttf");

        // This works within Eclipse project but not when exported to runnable JAR, 
        // Moreover many suggest that InputStream should be favored over FileInputStream
        try {
            fis = new FileInputStream(new File(getClass().getResource("/examples/resources/verdana.ttf").toURI()));
        } catch (FileNotFoundException e1) {
            JOptionPane.showMessageDialog(this, "FileNotFoundException!");
        } catch (URISyntaxException e1) {
            JOptionPane.showMessageDialog(this, "URISyntaxException!");
        } catch (Exception e1) {
            JOptionPane.showMessageDialog(this, "NullPointerException!");
        }

        try {
            fon = Font.createFont(Font.TRUETYPE_FONT, fis);
        } catch (FontFormatException e) {
            // TODO Auto-generated catch block
            System.out.println("Error - FontFormatException " + e.getMessage());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println("Error - IOException " + e.getMessage());
        }

        fon = fon.deriveFont(Font.PLAIN, 72);

        FontMetrics metrics = getFontMetrics(fon);
        comp2D.setFont(fon);
        comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        int x = (getSize().width - metrics.stringWidth(text)) / 2;
        int y = getSize().height / 2;

        comp2D.drawString(text, x, y);
    }

    public static void main(String[] args) {
        JFrame mainFrame = new JFrame("Main Menu");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(1000, 250);
        mainFrame.setVisible(true);
        mainFrame.add(new Test01());
        // mainFrame.pack();
    }
}

Entonces, lo que me molesta es:

- Por qué esto no funciona (parece que no puede encontrar el archivo de fuente) ya que arroja NullPointerException

fis = this.getClass().getResourceAsStream("/examples/resources/vedrana.ttf");

ni esto está funcionando

fis = this.getClass().getClassLoader().getResourceAsStream("/examples/resources/verdana.ttf");

- Por qué esto funciona dentro del proyecto Eclipse, pero no cuando se exporta a JAR ejecutable

fis = new FileInputStream(new File(getClass().getResource("/examples/resources/verdana.ttf").toURI()));

ACTUALIZAR Al final resultó que esto funcionará:

fis = this.getClass().getClassLoader().getResourceAsStream("examples/resources/verdana.ttf");

El problema estaba en la primera barra diagonal: la ruta debería ser "examples / resources / verdana.ttf" en lugar de "/examples/resources/verdana.ttf". Funciona tanto en Eclipse como en JAR ejecutable.

Ahora, lo que me intriga es por qué es ese primer corte necesario en este caso

ImageIcon loadIcon = new ImageIcon(getClass().getResource("/examples/resources/load.gif"));

ACTUALIZACIÓN 2: Después de sentirse frustrado por qué este método no funciona

InputStream fis = this.getClass().getResourceAsStream("/examples/resources/verdana.ttf");

Eliminé toda la clase de Eclipse y ahora AMBOS métodos funcionan dentro de Eclipse y JAR ejecutable, tal como debería ser.

InputStream fis = this.getClass().getResourceAsStream("/examples/resources/verdana.ttf");

o

InputStream fis = this.getClass().getClassLoader().getResourceAsStream("examples/resources/verdana.ttf");

Respuestas a la pregunta(2)

Su respuesta a la pregunta