Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Java Applet, eccezioni lanciate solo nel browser.

    Salve a tutti ragazzi, ho un problema che ormai non riesco più a capire come risolvere.


    Praticamente ho fatto un applet, il cui codice nella pagina html è questo:

    codice:
    <applet code=gui.clientGUI.MyApplet.class        archive="QTminer.jar"
            width=400 height=200></applet>
    Il file jar, che la contiene, dopo l'export di eclipse ha questi contenuti:

    Nfkum.png


    Questo, è il mio codice:

    codice:
    import javax.swing.*;import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.BufferedImage;
    
    publicclassMyAppletextendsJApplet{
    
        publicvoid init(){
            try{
                SwingUtilities.invokeAndWait(newRunnable(){
                    publicvoid run(){
                        initUI();
                    }
                });
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
        privatevoid initUI(){
            getContentPane().setLayout(newFlowLayout(FlowLayout.CENTER,5,5));
    
            JButton btnStartApplication =newJButton("Start Application");
            btnStartApplication.addActionListener(newActionListener(){
                publicvoid actionPerformed(ActionEvent e){
                    SS oi =new SS();
                    oi.setVisible(true);
                }
            });
            getContentPane().add(btnStartApplication);
        }
    }
    
    class SS extendsJWindow{
    
        privateJLabel lblNewLabel;
        privateJLabel label;
    
        public SS(){
        setBounds(newRectangle(0,0,883,590));
        setLocationRelativeTo(null);
        getContentPane().setLayout(null);
    
        lblNewLabel =newJLabel("Welcome",SwingConstants.CENTER);
        lblNewLabel.setForeground(Color.RED);
        lblNewLabel.setFont(newFont("Segoe UI",Font.BOLD |Font.ITALIC,24));
        lblNewLabel.setBounds(0,313,883,41);
        getContentPane().add(lblNewLabel);
    
        label =newJLabel(newImageIcon(getClass().getResource("/gui/resources/Qtminer_background.jpg")));
    
        label.setBounds(0,0,883,592);
        getContentPane().add(label);
    
        setVisible(true);
    }
    }

    Il tutto, lanciato in eclipse, funziona alla perfezione, ma quando eseguo l'applet nel browser, sfruttando la java console, ho notato che mi viene restituita l' eccezione NullPointerException a questa istruzione:

    codice:
    label.setIcon(newImageIcon(getClass().getResource("/gui/resources/Qtminer_background.jpg")));


    Il percorso però è giusto!

    Inoltre poi, la mia applet sfrutta due librerie, una che è il connector mysql, e un'altra è una libreria fatta da me... Beh, esportando il file jar e vedendone i contenuti, non ho trovato queste librerie all'interno, colpa di eclipse? Potete aiutarmi?

    Grazie



    Ultima modifica di .*+._Max93_.+*.; 28-09-2015 a 12:45

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Sei Francesco93 su iprogrammatori.it? Volevo giusto poi risponderti lì ... ma lo faccio qui.

    Quote Originariamente inviata da .*+._Max93_.+*. Visualizza il messaggio
    Il percorso però è giusto!
    Sei sicuro che nel jar la struttura delle cartelle e i nomi sia esattamente quello e con il giusto "case" (nei jar i nomi sono case-sensitive)?

    Quote Originariamente inviata da .*+._Max93_.+*. Visualizza il messaggio
    Inoltre poi, la mia applet sfrutta due librerie, una che è il connector mysql, e un'altra è una libreria fatta da me... Beh, esportando il file jar e vedendone i contenuti, non ho trovato queste librerie all'interno, colpa di eclipse?
    Altri jar non possono stare a loro volta dentro un jar. Una JVM non cerca jar dentro jar.

    O elenchi i jar nell'attributo 'archive' (vedi documentazione ufficiale). Oppure esiste un'altra possibilità: usi l'attributo Class-Path nel "manifest" del tuo jar.

    Comunque visto che parli di MySQL ... quale/dove è l'host del server?? Hai considerato le (pesanti) restrizioni delle applet?


    P.S. non postare codice colorato/formattato con font .... è un gran disagio quotarlo in parte!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ciao andbin, si sono Francesco93, purtroppo ho questa urgenza e cerco di aiutarmi il più possibile con internet.

    Dunque, per il percorso, sono assolutamente sicuro sia quello, ho controllato più e più volte ed è giusto.

    per il discorso dei jar esterni, beh non ne so molto, ma ho modificato il codice applet come segue:

    codice:
    <applet     code="gui.clientGUI.MyApplet.class" 
        archive="QTminer.jar , JSockNS.jar, mysql-connector-java-5.1.36-bin"
        alt="Java is DISABLED in this browser!"
        width="800"
        height="800">
    This browser does not recognize the applet element! 
    </applet>
    Le due librerie (JSockNS, e mysql....) sono inserite nel progetto e in eclipse funzionano correttamente...

    questo è il file classpath:

    <?xml version="1.0" encoding="UTF-8"?><classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.Standar dVMType/JavaSE-1.8"/>
    <classpathentry kind="lib" path="C:/Users/Francesco/Desktop/Java Eclipse Workspace/External JARs/mysql-connector-java-5.1.36-bin.jar"/>
    <classpathentry kind="lib" path="C:/Users/Francesco/Desktop/Java Eclipse Workspace/External JARs/JSockNS-1.0.jar"/>
    <classpathentry kind="output" path="bin"/>
    </classpath>

    Tuttavia, sta usando i percorsi del mio computer, se volessi metterli su un sito dovrei usare i percorsi del sito in cui risiedono i jar, giusto?


    il codice che ho postato, comunque, è un caso a parte e l'ho fatto solo per far vedere l'errore che mi viene restituito, prima volevo risolvere il problema dell'immagine.

    Da cosa può dipendere secondo te?


    P.S. non postare codice colorato/formattato con font .... è un gran disagio quotarlo in parte!
    Scusami, cosa intendi? Perdonami.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da .*+._Max93_.+*. Visualizza il messaggio
    codice:
        archive="QTminer.jar , JSockNS.jar, mysql-connector-java-5.1.36-bin"
    Occhio che l'ultimo nome manca del .jar. Comunque questi 3 jar, siccome non hai specificato un codebase diverso, sono relativi alla pagina web dove hai <applet>. Quindi nella stessa cartella dove hai il .html, dovrai avere i 3 jar.

    Quote Originariamente inviata da .*+._Max93_.+*. Visualizza il messaggio
    Tuttavia, sta usando i percorsi del mio computer, se volessi metterli su un sito dovrei usare i percorsi del sito in cui risiedono i jar, giusto?
    Se non vuoi che nel progetto ci siano path "assoluti" della tua macchina relativi ai jar esterni:
    - crea una cartella es. "lib" nella radice del progetto (allo stesso livello di src per intenderci)
    - mettici dentro i due jar
    - proprietà del progetto -> Java Build Path -> scheda "Libraries" -> pulsante "Add JARs..." e scegli i jar (rimuovi prima i riferimenti che avevi, naturalmente).

    Questo fa sì che nel .classpath ci siano path relativi. Questo rende più portabile il tuo progetto. Ma non c'entra nulla con il deploy della applet. Spetta a te scegliere come/dove disporre i jar relativamente alla pagina web.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Sei stato chiarissimo, ma come posso fare per il problema del caricamento dell'immagine? Esportando questo semplice codice, che non usa librerie esterne ma usa solo delle immagini presenti nel path indicato, non riesco a visualizzarlo.

    Magari è un problema del metodo? non saprei proprio

  6. #6
    Non c'è proprio soluzione??? :/

  7. #7
    Risolto:

    Il problema era dato dal sistema operativo che bloccava l'accesso al file jar. Eseguendo l'applet da un web-server reale (quindi non da un file html locale), i problemi non vengono rilevati e l'applet viene eseguita correttamente.

    Grazie lo stesso per l'aiuto andbin!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.