Applet Applet läuft nicht im Browser

Q

qtronic

Gast
Hi @ all,

ich bin gerade dabei ein applet zu programmieren, das pdf nach einem schlüsselbegriff durchsucht.

das funktioniert nach dem prinzip: text aus pdf extrahieren, abspeichern in txt, durchsuchen des txt nach schlüsselbegriff, bei fund des wortes wird ein zum filenamen-array gehörendes array im entsprechenden fach auf true gesetzt.

danach werden alle dateinamen ausgegeben zu denen eine true gehört.

das ganze hat dann noch ein gui von mir bekommen mit ladebalken der den fortschritt der suche anzeigt.

dieses applet läuft in eclipse aber nicht im browser obwohl ich es (glaube ich) richtig signiert habe.

es fängt auch beim start einer suche an im ordner nach dateien zu suchen und gibt die dateinamen auch aus.... dabei bleibt es dann aber leider auch.

in der konsole steht dass ich eine NullPointerException habe obwohl es in eclipse läuft.

was könnte die ursache sein?

danke schonmal für eure hilfe

gruß qtronic
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Da steht ja sicherlich nicht nur NPE! Da steht auch eine Zeile und noch mehr Informationen zu der Fehlermeldung/Stacktrace...da sollte man zunächst mal nachschauen und dann hier noch einmal nachfragen, wieso das evtl. im Applet/(Jar??) nicht laufen könnte!
 
Q

qtronic

Gast
also ich habe in der java konsole natürlich schon nachgesehn bloß kann ich leider nicht wirklich was damit anfangen, weil die NPE anscheinend in einer zeile stehen soll wo gar keine NPE sein kann.

die restlichen infos aus der konsole sagen mir noch weniger da ich erst seit knapp 1,5 wochen java programmiere (hab davor vom studium her etwas mit processing "gearbeitet")

naja hier mal mein code... falls jemand lust hat sich den mal anzuschauen ;P
warnung im vorraus: ich bin mir ziemlich sicher, dass aus den augen eines erfahrenen java programmieres die ein oder andere stelle bzw der gesamte code etwas "unschön" aussehen wird ^^


hier der code des GUI
Java:
import java.awt.*;
import java.awt.event.*; 
import javax.swing.*;
import java.beans.*;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;

	
public class applet_main extends JApplet implements ActionListener,
													PropertyChangeListener{

	private static final long serialVersionUID = 1L;
	Task task;
	private JTextField input;
	private JButton startButton;
	private JProgressBar progressBar;
	private JTextField taskOutput;
	private JTextField title;
	int progress;
	
	String search4,suchbegriff = "";
	String [] files,ergebnisse;
	
	boolean content = true;
	
	double file_percent;
	
	int percent;

	class Task extends SwingWorker<Void, Void> {


	    @Override
	    public Void doInBackground() {
	    	
				final search_function s = new search_function(suchbegriff);
				files = s.scan();
				for (int i=0;i<files.length; i++){
					System.out.println("APP: " + files[i]);
				}
				try{
				for (int k=0; k<files.length; k++){	
					s.read(k);
					progress = (int) search_function.prozent_gesamt;
					System.out.println(progress);
					setProgress((int)progress);
						taskOutput.setText(String.format(
	                    "scanning file " + files[k]));
					progressBar.setValue(progress);
					}
			
				}
				catch(Exception e){
					e.printStackTrace();
				}
				
				ergebnisse = s.show();
			for (int i=0; i<ergebnisse.length; i++){
				System.out.println("Applet: " + ergebnisse[i]);
			}
	    
		return null;
	    }
	    public void done() {
            //Toolkit.getDefaultToolkit().beep();
	    	progressBar.setValue(100);
            startButton.setEnabled(true);
            setCursor(null); //turn off the wait cursor
            
            taskOutput.setText("Done!\n");
            
            if (ergebnisse.length != 0){
            	validate();
            	for (int i=0;i<ergebnisse.length;i++){
            		System.out.println(ergebnisse[i]);
            	}
            	//ergebnisse_tunnel();
            	
            	task.cancel(task.isDone());
            }
            else{
            	taskOutput.setText("there are no results for your keyword!\n");
            	task.cancel(task.isDone());	
            }
        }
	}

	public void init(){
		
		setLayout(new BorderLayout());
		
		title = new JTextField("keyword:");
		title.setEditable(false);
        title.setEnabled(false);
		title.setBackground(Color.white);
        title.setDisabledTextColor(Color.black);
        title.setBorder(null);
		
		startButton = new JButton("search");
        startButton.setActionCommand("search");
        startButton.addActionListener(this);
        
		input = new JTextField(suchbegriff,8);
		
		progressBar = new JProgressBar(0, 100);
        progressBar.setValue(0);
        progressBar.setStringPainted(true);
        
        taskOutput = new JTextField(10);
        //taskOutput.setMargin(new Insets(5,5,5,5));
        taskOutput.setEditable(false);
        taskOutput.setEnabled(false);
        taskOutput.setBackground(Color.lightGray);
        taskOutput.setDisabledTextColor(Color.black);
        
        JPanel panel = new JPanel();
        panel.add(title);
		panel.add(input);
		panel.add(startButton);
		panel.add(progressBar);
		panel.setBackground(Color.white);
		
		add(panel, BorderLayout.PAGE_START);
		add(taskOutput);
		setVisible(true);
	}

	public void actionPerformed(ActionEvent evt) {
		 System.err.println("klick performed");
		 suchbegriff = input.getText();
		 if (suchbegriff.length() > 0){
	        startButton.setEnabled(false);
	        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
	        
	        task = new Task();
	        task.addPropertyChangeListener(this);
	        task.execute();
		 }
		 else{
			 taskOutput.setText("please insert a keyword\n");
		 }
	    }

	@Override
	public void propertyChange(PropertyChangeEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	

	
}

und hier der code der pdf durchsuchenden klasse
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FilePermission;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.security.Permission;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;


public class search_function{

	private static String suchbegriff;
	private static String zeile = null;
	private static int j = 0, counter;
	private static String [] words;
	private static char Char;
	private static int start = 0,end;
	private static int ergebnisse = 0;
	private static boolean [] file_with_word,name,content;
	private static String pdf_text = " ";
	static String status;
	private static String name_index;
	private static File path,txt;
	private static double prozent_pro_datei=0;
	static double prozent_gesamt=0;
	private static String[] files;
	private static String [] list_found_files;
	private static int count_written_files=0;
	
	public search_function(String search4) {
		this.suchbegriff = search4;
	}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
/////////////////////////////////////Scannen des Angegebenen Ordners/////////////////////////////////////////////////
////////////////und Abspeichern der Namen mit Endung der enthaltenen Dateien in einen String Array///////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static String [] scan (){
File f = new File("U:/Technical/Techdocu/TIC/SPC-active/pdf/");
files = f.list();
file_with_word = new boolean [files.length];
name = new boolean [files.length];
content = new boolean [files.length];
for (int i = 0; i< files.length; i++){
System.out.println(files[i]);
}
System.out.println("Overall number of detected files: " + files.length);
prozent_pro_datei = 100/((double)files.length);
System.err.println("scan performed");
return files;
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////Öffnen der PDF datei und extrahieren des enthaltenen Textes//////////////////////////////////////////////
////////////Extrahierter Text wird als SEARCHDATA.txt in das Verzeichnis/////////////////////////////////////////////
////////////C:/WINDOWS/Temp/Search_SPC_active gespeichert welches erstellt wird falls nicht vorhanden////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static void read (int k) throws IOException{
		
	PDDocument reader = PDDocument.load("U:/Technical/Techdocu/TIC/SPC-active/pdf/" + files[k]);
	PDFTextStripper stripper = new PDFTextStripper();
	pdf_text = stripper.getText(reader);
	reader.close();
	
	path = new File("C:/WINDOWS/Temp/Search_SPC_active/");
	if (path.exists() == false){
		path.mkdirs();	
	}
	FileWriter txt_file = new FileWriter("C:/WINDOWS/Temp/Search_SPC_active/SEARCHDATA.txt");
	txt_file.write(pdf_text,0,pdf_text.length());
	txt_file.close();
	
	BufferedReader in = new BufferedReader(new FileReader("C:/WINDOWS/Temp/Search_SPC_active/SEARCHDATA.txt"));
	while (((zeile)= in.readLine()) != null) {	
		check4word(suchbegriff,k);
	}
	in.close();
	System.out.println(status(k,files));
}
	
public static String[] show(){
	prozent_gesamt = 0;
	txt = new File("C:/WINDOWS/Temp/Search_SPC_active/SEARCHDATA.txt");
	if (txt.exists()== true ) {
		if (txt.canRead() == true) {
			if (txt.canWrite() == true) {
				if (txt.isFile() == true) {
					txt.delete();//Löschen des txt-files im temp ordner
				} else System.out.println("File ist gar kein File");
			} else System.out.println("File darf nicht geschrieben werden.");
		} else System.out.println("File darf nicht gelesen werden.");
	} else System.out.println("File existiert nicht");

	System.out.println("Search results:");//Ausgabe der ergebnisse in der konsole
			for (int i=0; i<=(files.length-1);i++){
				if (file_with_word[i] == true){
					System.out.println(files[i] + " " + file_with_word[i]);
					if (name [i] == true){
					System.out.println("Found by filename");
					}
					if (content [i] == true){
						System.out.println("Found by content");
					}
					ergebnisse++;
				}
			}
			if (ergebnisse == 0){
				System.out.println("Es liegen leider keine Ergebnisse zu ihrem Suchbegriff vor");
				
			}
			System.out.println(ergebnisse);
			list_found_files = new String [ergebnisse];
			counter = 0;
			for (int i=0; i<=(files.length-1);i++){				
				if (file_with_word[i] == true){
					if (counter <= ergebnisse){
						list_found_files [counter] = files[i];
						
						counter++;
					}
				}
			}
			System.out.println("Ergebnisse als liste:");
			System.out.println("");
			for (int i=0;i<list_found_files.length;i++){
					System.out.print(list_found_files[i]);
				System.out.println("");
			}
			if (ergebnisse != 0) {
				ergebnisse = 0;
			}
			return list_found_files;
			
	}
	
	private static String status(int k, String [] files) {
		prozent_gesamt+=prozent_pro_datei;
		status = "Scanned succesfully file " + (k+1) + " of " + files.length + "         Fortschritt: " + (int)prozent_gesamt + "%" + "        Dateiname: " + files[k];
		return status;
	}

	public static void check4word (String check,int k) throws IOException {
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////Zerlegen des strings ZEILE in seine wörter. Diese werden in einem Array namen wörter abgespeichert////////
////////////(Vorbereitung auf die Suchfunktion)///////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////SEARCHDATA.txt wird per tool ausgelesen und Zeile für Zeile durchgegangen ////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
		//System.out.println(check);
		j = 0;
		end=1;
		zeile = zeile + " ";
		//System.out.println(zeile);
		words = new String[zeile.length()];
		//System.out.println("array erstellt " + files[k]);
		for (int i=0; i <= zeile.length()-1; i++){
			Char = zeile.charAt(i);
			if ( Char == ' ' ){
				if (end - start >= 1){
				words [j] = zeile.substring(start,end+1);
				//System.out.println(words [j]);
				j++;
				start = i+1;
				end = i+1;
				}
				else{
					start++;
					end++;
				}
				
			}
			else if (i==zeile.length()-1){
				end = i;
				words [j] = zeile.substring(start,end);
				//System.out.println(words [j]);
				i++;
			}
			else{
			end = i;
			}
		}
		start = 0;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////Eliminieren eventueller Leerzeichen vor einzelnem Wort////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		for (int i=0; i<words.length; i++){
			if (words[i] != null){
				if (words[i].charAt(0)== ' '){
					words[i]=words[i].substring(1);
					//System.out.println(words[i]);
				}
			}
		}
		
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////Extrahieren eventueller Artikelnummern aus dem Dateiname//////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

			for (int j=0;j<files[k].length(); j++){
				if ( files[k].charAt(j) == 'E' || files[k].charAt(j) == 'F' || files[k].charAt(j) == 'X' || files[k].charAt(j) == 'A' || files[k].charAt(j) == 'Z' || files[k].charAt(j) == 'W' || files[k].charAt(j) == 'C' || files[k].charAt(j) == 'N' || files[k].charAt(j) == 'S' || files[k].charAt(j) == 'B' || files[k].charAt(j) == 'T' || files[k].charAt(j) == 'G' || files[k].charAt(j) == 'V' || files[k].charAt(j) == 'M'){
					if (j+8 <= files[k].length()-1){	
						if (files[k].charAt(j+5) == '0' ||files[k].charAt(j+5) == '1' || files[k].charAt(j+5) == '2' || files[k].charAt(j+5) == '3' || files[k].charAt(j+5) == '4' || files[k].charAt(j+5) == '5' || files[k].charAt(j+5) == '6' || files[k].charAt(j+5) == '7' || files[k].charAt(j+5) == '8' || files[k].charAt(j+5) == '9'){
							name_index = files[k].substring(j,j+8);
							j=files[k].length()-1;
						}	
						else{
							if (j+4 <= files[k].length()-1){
								name_index=files[k].substring(j,j+4);
								j=files[k].length()-1;
							}
						}
					}
				}
				
			}
			//System.out.println(name_index + " " + files[k]);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////EIGENTLICHE SUCHFUNKTION: ÜBERPRÜFT OB GESUCHTES WORT IN PDF / TXT VORKOMMT ///////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			for (int l=0; l<=words.length-1; l++){
				if (check.equals(words[l]) == true){
					l = words.length - 1;
					file_with_word [k]= true;
					content [k] = true;
				}
			}
			if (check.equals(name_index) == true){
				file_with_word [k]= true;
				name [k] = true;
			}
		
		
		}
	}
 

eRaaaa

Top Contributor
also ich habe in der java konsole natürlich schon nachgesehn bloß kann ich leider nicht wirklich was damit anfangen
Hier gibt es aber bestimmt Leute die damit etwas anfangne können und dir helfen können, aber wenn du sie erst gar nicht hier postest, dann natürlich nicht
weil die NPE anscheinend in einer zeile stehen soll wo gar keine NPE sein kann.
Wie oft haben wir das hier schon gehört :)
die restlichen infos aus der konsole sagen mir noch weniger da ich erst seit knapp 1,5 wochen java programmiere (hab davor vom studium her etwas mit processing "gearbeitet")
s.o. !

naja hier mal mein code... falls jemand lust hat sich den mal anzuschauen ;P
sicher nicht, ohne Fehlermeldung
 
Q

qtronic

Gast
ok stimmt muss dir recht geben ohne die fehlermeldung ist das ganze relativ sinnlos ^^

also hier die fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
	at applet_main$Task.done(applet_main.java:89)
	at javax.swing.SwingWorker$5.run(Unknown Source)
	at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
	at sun.swing.AccumulativeRunnable.run(Unknown Source)
	at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
	at javax.swing.Timer.fireActionPerformed(Unknown Source)
	at javax.swing.Timer$DoPostEvent.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

habe übrigens ein weiteres phänomen entdeckt:

das applet das gestartet wird entspricht aus irgendeinem grund nicht dem stand des momentanen jar file.

hab mich da dann per google etwas schlau gemacht und da da stand man müsse den class-loader cache löschen und das problem wäre behoben.

naja.. das hab ich in der java konsole getan und danach auch überprüft ob alles weg ist (class-loader liste)

rein theoretisch müsste es geklappt haben... hat es aber wies aussieht nicht.

der beweis dafür: ich habe heute den ganzen tag am code rumgebastelt und habe aus der klasse search_function den befehl entfernt alle dateinamen auszugeben... in der konsole werden sie aber trotzdem ausgegeben...

entweder computer arbeiten doch nicht logisch oder (was ich eher annehme) ich habe einfach nicht das nötige wissen ^^

bitte helft mir... ich versteh grad die welt nicht mehr

gruß qtronic

[EDIT]aufgrunde der tatsache dass die konsole gar nicht das momentane ergebniss anzeigt stimmt die zeilenangabe zu
Code:
 at applet_main$task.done
natürlich auch nicht.[/EDIT]
 

L-ectron-X

Gesperrter Benutzer
Es gibt einen Java-Cache, in welchem bspw. alle heruntergeladenen Jar-Dateien landen und einen Browser-Cache, in dem allgemein alle Webinhalte landen. Beide kannst du mal löschen.
Falls du Windows benutzt, musst du das in der Systemsteuerung in den Java-Settings machen.
 
Q

qtronic

Gast
danke l-ectron-x für den tipp =)

hat aber leider nicht funktioniert... er zeigt noch genau das selbe an.. komischerweise..

das ganze wird noch komischer:

ich habe von meinem momentanen projektstand mit eclipse ein neues runnable jar file generiert und dies mit dem jarsigner tool gesigned. anschließend habe ich in meinem javascript ( das für den aufbau der html seite zuständig ist) den archive- parameter des <applet> - tags auch entsprechend dem neuen namen des jar-files angepasst.

trotzdem spuckt er noch die selbe fehlermeldung aus.. der witz dabei: die zeile in der die NPE sein soll ist leer xD

weiteres problem... das applet wird allgemein nicht richtig ausgeführt! Ein beispiel

ich habe einen ActionListener auf einen Button gelegt (dieser startet die suchfunktion)

im block
[JAVA=131]
public void actionPerformed(ActionEvent evt) {
System.err.println("klick performed");
suchbegriff = input.getText();
if (suchbegriff.length() > 0){
startButton.setEnabled(false);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

task = new Task();
task.addPropertyChangeListener(this);
task.execute();
}
else{
taskOutput.setText("please insert a keyword\n");
}
}
[/code]
lege ich fest, dass (wenn kein suchbegriff eingegeben wurde) ausgegeben wird:"please inser a keyword"

wenn ich mein applet im browser ausführe und dann auf meinen search button klicke springt er direkt zu ausgabe "Done!" die aber erst kommen sollte wenn der thread task durchlaufen ist

[JAVA=67]
public void done() {
//Toolkit.getDefaultToolkit().beep();
progressBar.setValue(100);
startButton.setEnabled(true);
setCursor(null); //turn off the wait cursor

taskOutput.setText("Done!\n");

if (ergebnisse.length != 0){
validate();
for (int i=0;i<ergebnisse.length;i++){
System.out.println(ergebnisse);
}
//ergebnisse_tunnel();

task.cancel(task.isDone());
}
else{
taskOutput.setText("there are no results for your keyword!\n");
task.cancel(task.isDone());
}
}
[/code]

des weiteren habe ich die JTextArea inzwischen entfernt und lasse mir nun (eigentlich) die statusmeldungen per
Code:
getAppletContext().showStatus("XXXXXX")
was (wies sollte es auch anders sein ^^) nicht übernommen wurde. stattdessen zeigt er immer noch eine JTextArea an. zumindest hab ich noch keine statusleiste mit scrollbar gesehn ;D

naja ich weiß einfach nicht mehr weiter ^^

gruß qtronic
 

L-ectron-X

Gesperrter Benutzer
trotzdem spuckt er noch die selbe fehlermeldung aus.. der witz dabei: die zeile in der die NPE sein soll ist leer xD
Probiers mal in einem anderen Browser.

weiteres problem... das applet wird allgemein nicht richtig ausgeführt! Ein beispiel
...
wenn ich mein applet im browser ausführe und dann auf meinen search button klicke springt er direkt zu ausgabe "Done!" die aber erst kommen sollte wenn der thread task durchlaufen ist
Ja, ist ist richtig. Du musst die Operation in einen eigenen Thread auslagern.

des weiteren habe ich die JTextArea inzwischen entfernt und lasse mir nun (eigentlich) die statusmeldungen per
Code:
getAppletContext().showStatus("XXXXXX")
was (wies sollte es auch anders sein ^^) nicht übernommen wurde.
Das Problem kenne ich, scheint vom Browser abzuhängen. Auch hier mal einen anderen Browser ausprobieren.

stattdessen zeigt er immer noch eine JTextArea an. zumindest hab ich noch keine statusleiste mit scrollbar gesehn ;D
Wenn du eine noch irgendwo eine JScrollBar/JScrollPane eingebaut hast, musst die auch entfernt werden.
 
Q

qtronic

Gast
auf jeden fall ein logischer ansatz L-ectron-X =) danke dafür =)

ein anderer browser hat mir leider auch nicht weitergeholfen.

ich hab noch nen anderen ansatz:
kann es sein dass man durch etwas dummheit bei eclipse immer wieder ein und denselben stand des projektes exportiert?

weil langsam kanns eig echt nich mehr sein dass das an irgendeinem catch liegt...

oder muss ich speziell noch irgendwelche prozesse wom applet beenden die alles blockieren?
diese müssten ja aber eigentlich durch den garbagecollector ja schon rausgeflogen sein...

wie du siehst hab ich nicht so wirklich ne ahnung wie die zusammenhänge funktionieren... ich hab bisher einfach nur ein bisschen programmierlogik aber mir fehlt glaub ich der gesamtüberblick

vielen dank übrigens für deine bisherigen mühen =)

gruß qtronic
 

L-ectron-X

Gesperrter Benutzer
Wenn du einen anderen Browser probiert hast, hast du zwangsweise auch einen anderen Cache-Inhalt.
Daher hätte es funktionieren müssen, wenn es ein Cache-Problem gewesen wäre.
Scheint aber nicht so zu sein.
Deine Frage zu Eclipse kann ich dir nicht beantworten, weil ich mit Netbeans arbeite.
Du kannst aber mal, um ein Problem mit der IDE völlig auszuschließen, dein Applet manuell auf der Console kompilieren und in eine HTML-Datei einbinden.
 
Q

qtronic

Gast
Hi @ all,

da bin ich wieder ^^

hab jetzt meinen code nochmal neu geschrieben in einer etwas vereinfachten form.

habe dann dein (L-ectron-X) batch-code dazu verwendet um zu signieren und siehe da: das applet kann ausgeführt werden!!

Also für alle die das gleiche ohne ein ähnliches problem haben: nehmt das batch file L-ectron-X zum signieren und zertifizieren! Es nimmt euch viel arbeit ab und ihr vergesst dabei auch nicht das zertfikat (wie ich ^^) hier der link dazu:

http://www.java-forum.org/applets/16717-applets-webstart-anwendungen-signieren.html#_

so dass war die gute botschaft :p

die schlechte ist: für die operationen die ich ausführen will habe ich noch einen fehler:

und zwar gleich in zwei verschiedenen varianten:

wenn ich mit eclipse mein runnable jar file generieren kann ich mich entweder entscheiden die libraries in einem extra ordner abzulegen der sich im selben ordner wie das jar file befindet oder ich kann die libraries in dem jar file ablegen.

Bei der ersten Methode erhalte ich in der

Code:
java.lang.SecurityException: trusted loader attempted to load sandboxed resource from file: xxxxPFADxxxx/pdfbox-1.6.0.jar

             at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
	at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1500(Unknown Source)
	at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(Unknown Source)
	at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source)
	at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
	at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at searchPDF.read(searchPDF.java:42)
	at AppletGUI.actionPerformed(AppletGUI.java:113)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


Die frage ist jetzt: was bedeutet das bzw. was muss ich machen dass das weggeht? ^^

Außerdem spuckt mir mein firefox eine sicherheitswarnung aus wenn ich das Applet asuführe:
 
Q

qtronic

Gast
sry bin auf die falsche taste gekommen.. bin eig noch nicht fertig mit schreiben...

also wo war ich.. ach ja: Bei der ersten methode erhalte ich in der java console den im post von eben enthaltenen fehler code...

bei der zweiten methode hingegen erhalte ich folgenden fehlercode:
Code:
Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/PDDocument
	at searchPDF.read(searchPDF.java:42)
	at AppletGUI.actionPerformed(AppletGUI.java:113)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 37 more

obwohl eben diese class eig vorhanden ist... hab schon den genauen pfad in dem pdfbox jar nachgeschaut und die klasse ist da!

was kann ich jetzt machen... weil selbst in dem manifest file meiner jar datei ist der richtige pfad angegeben und die andre methode wo die security exception rauskommt ist je eig (zumindest aus meiner sicht) noch unlogischer...

vielen dank schonmal für eure vorschläg

mfg qtronic
 

L-ectron-X

Gesperrter Benutzer
Die Fehlermeldung deines ersten Postings
(
Code:
java.lang.SecurityException: trusted loader attempted to load sandboxed resource from file: xxxxPFADxxxx/pdfbox-1.6.0.jar
)
deutet auf einen Zugriff von signiertem auf unsignierten Code hin.

Das heißt: Jede externe Bibliothek, die von signiertem Code benutzt wird, muss ebenfalls signiert sein.
Wie sieht eigentlich dein applet-Tag aus?

Außerdem spuckt mir mein firefox eine sicherheitswarnung aus wenn ich das Applet asuführe:
Du hast doch den Link zum FAQ-Beitrag selbst gepostet. Dort steht doch auch, warum diese Warnung angezeigt wird und dass man sie nicht umgehen kann.
 
Q

qtronic

Gast
hi L-extron-X !

vielen dank für deine hilfe!

habe jetzt auch das jar-file von PDFBox signiert und ausgelagert und es funktioniert jetzt einwandfrei ^^
nebenbei find ichs etwas seltsam, dass tools allem anschein nach nicht vom hersteller gesigned werden...


bis halt auf die fehlermeldung die übrigens nicht dieselbe ist wie in den FAQs beschrieben =) ich mein das da eine meldung kommt die ffrat ob ich das applet zulassen will ist ja soweit klar und normal.

danach kommt bei mir halt nocheinmal eine meldung von java, die besagt, dass das applet unter umständen potenzielldas system gefärdende operationen ausführen kann und es fragt mich ob ich das applet blockieren will. diese abfrage kommt so wies aussieht von den java.security richtlinien weil mein applet die erlaubnis dazu hat überall im computer daten zu lesen, zu schreiben, zu löschen und zu bearbeiten ^^

aber an sich läuft es jetzt (Gott sei dank) endlich =)

vielen dank für deine geduld =)

gruß qtronic
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
H Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 3
P Applet läuft nicht in Browser Tools - Maven, Gradle, Ant & mehr 21
sliwalker Trotz FAQ, Forum und Google läuft Applet im Firefox nicht Tools - Maven, Gradle, Ant & mehr 6
G Applet läuft nicht auf Apache Server sonst schon. Tools - Maven, Gradle, Ant & mehr 4
G Applet läuft in Eclipse aber im Browser nicht Tools - Maven, Gradle, Ant & mehr 12
G Applet läuft nur im IE nicht Tools - Maven, Gradle, Ant & mehr 3
H Applet läuft unter Windows 98 nicht! Tools - Maven, Gradle, Ant & mehr 6
W Applet läuft im JBuilder - Vorschaufenster aber im IE nicht Tools - Maven, Gradle, Ant & mehr 9
A Java Applet läuft nicht, wenn via IIS geladen Tools - Maven, Gradle, Ant & mehr 2
L Applet läuft 'nur' auf der JVM Tools - Maven, Gradle, Ant & mehr 5
G Applet läuft erst, nach dem ich es abgeschrieben hatte Tools - Maven, Gradle, Ant & mehr 8
B Applet: com.sun.deploy.security.BlockedException :-( Tools - Maven, Gradle, Ant & mehr 0
M Applet Applet legt Browser lahm Tools - Maven, Gradle, Ant & mehr 3
J Applet Aus anderer Browserinstanz Applet abfragen Tools - Maven, Gradle, Ant & mehr 2
P Linux Applet/Webstart Schriftunterschiede Tools - Maven, Gradle, Ant & mehr 3
E JMol -Applet Einbindung Tools - Maven, Gradle, Ant & mehr 0
T Applet Applet und IText wirft Incompatible magic value 1008813135 Fehler Tools - Maven, Gradle, Ant & mehr 6
P Applet Applet Signatur auf Server mit SSL-Zertifikat? Tools - Maven, Gradle, Ant & mehr 7
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
M Applet Applet funktioniert in Google Chrome nicht Tools - Maven, Gradle, Ant & mehr 2
O Applet "Anwendung kann nicht ausgeführt werden" Tools - Maven, Gradle, Ant & mehr 6
Q Applet Fehlermeldung bei Applet-Wechsel Tools - Maven, Gradle, Ant & mehr 4
T Daten per POST-Methode aus Java-Applet nach php-Script senden Tools - Maven, Gradle, Ant & mehr 3
R Applet friert Adresszeile des Firefox ein Tools - Maven, Gradle, Ant & mehr 2
K Applet als Jar-Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 14
H Applet-Fehlermeldung Tools - Maven, Gradle, Ant & mehr 10
J Applet URL mittels TTS als Applet lesen lassen Tools - Maven, Gradle, Ant & mehr 40
F Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 16
S Applet Applet mit C# öffnen: java.lang.SecurityException: Permission denied (WinXP) Tools - Maven, Gradle, Ant & mehr 8
J Applet-Quellcode einsehen Tools - Maven, Gradle, Ant & mehr 6
E Applet Applet und Datenbank Konzept Tools - Maven, Gradle, Ant & mehr 4
A Applet: Html Datei und Class Datei nicht im selben Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
S Applet soll Textdatei von fremdem Server öffnen Tools - Maven, Gradle, Ant & mehr 8
E Java Applet bearbeiten Tools - Maven, Gradle, Ant & mehr 8
Quasar Wie signiere ich mein Applet richtig? Tools - Maven, Gradle, Ant & mehr 6
M mit Applet Javascript Aufrufen Tools - Maven, Gradle, Ant & mehr 2
S Applet and stop() method und gui blocked Tools - Maven, Gradle, Ant & mehr 4
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
A Applet, xxx.jar und hsqldb Tools - Maven, Gradle, Ant & mehr 4
T Webstart oder Applet Tools - Maven, Gradle, Ant & mehr 2
H Applet applet neu laden im browser Tools - Maven, Gradle, Ant & mehr 10
M Applet neustart Tools - Maven, Gradle, Ant & mehr 5
S Applet request unter Linux Tools - Maven, Gradle, Ant & mehr 14
S Applet GUI nicht im Webbrowser sichtbar Tools - Maven, Gradle, Ant & mehr 5
S Mittel Applet Datei an ein Webserver übertragen Tools - Maven, Gradle, Ant & mehr 2
M Applet in ClientServer J2EE Anwendung debugen Tools - Maven, Gradle, Ant & mehr 6
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
M Java3D Applet flackert wenn ein Button(HTML) gedrückt wird Tools - Maven, Gradle, Ant & mehr 11
S Policy mit Signiertem Applet verteilen Tools - Maven, Gradle, Ant & mehr 9
F Applet findet include nicht Tools - Maven, Gradle, Ant & mehr 15
L PHP + Java Applet Kommunikation Tools - Maven, Gradle, Ant & mehr 9
C Probleme mit Applet mit SQL im Browser Tools - Maven, Gradle, Ant & mehr 4
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
G Textfile in Applet laden möglich? Tools - Maven, Gradle, Ant & mehr 2
A Java-Applet Sandbox deaktiviren? Tools - Maven, Gradle, Ant & mehr 2
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
S Java Applet per Klick starten? Tools - Maven, Gradle, Ant & mehr 6
S Applet geht nicht Tools - Maven, Gradle, Ant & mehr 25
J Applet signieren Tools - Maven, Gradle, Ant & mehr 2
H Applet - Geschicklichkeitsspiel programmieren Tools - Maven, Gradle, Ant & mehr 16
U Jar funktioniert nicht als Applet Tools - Maven, Gradle, Ant & mehr 3
C Applet Frage Tools - Maven, Gradle, Ant & mehr 4
M Java Applet - enforce use of older JRE Tools - Maven, Gradle, Ant & mehr 3
N Wie Java-Programm zu Applet machen?! Tools - Maven, Gradle, Ant & mehr 2
W Webseite aus Applet öffnen Tools - Maven, Gradle, Ant & mehr 3
lumo Applet - resize Tools - Maven, Gradle, Ant & mehr 7
Icewind Applet reagiert nach neu laden der Webseite nicht mehr verlässlich auf KeyEvents Tools - Maven, Gradle, Ant & mehr 6
R Applet mit MySQL Tools - Maven, Gradle, Ant & mehr 3
A jar datei trotz zertifikat nich aus applet ausführbar Tools - Maven, Gradle, Ant & mehr 4
F Fehlende Applet Rechte Tools - Maven, Gradle, Ant & mehr 12
N [Applet] Button wir nach 5 secs Unsichtbar Tools - Maven, Gradle, Ant & mehr 2
N jar -> applet wie setzt man das am leichtesten um Tools - Maven, Gradle, Ant & mehr 7
V applet Java 1.6 -> 1.5 Problem ... wie mit Ant zu lösen? Tools - Maven, Gradle, Ant & mehr 7
F applet als JAR -> AccessControlException Tools - Maven, Gradle, Ant & mehr 3
grudge File in Applet laden Tools - Maven, Gradle, Ant & mehr 4
E Java Applet - Double Buffering Problem (Flackern) Tools - Maven, Gradle, Ant & mehr 6
R Applet mit bestimmter JRE ausführen Tools - Maven, Gradle, Ant & mehr 9
traysa Wie binde ich ein applet in eine jsp Tools - Maven, Gradle, Ant & mehr 3
D Mit dem Applet das DOM manipulieren? Tools - Maven, Gradle, Ant & mehr 3
ABstraCT Applet getCodeBase() Zugriff auf darüberliegendenden Ordner ? Tools - Maven, Gradle, Ant & mehr 1
S Java-Applet Steuerung IO Karte am Drucker-Port Tools - Maven, Gradle, Ant & mehr 4
P URL aus Applet öffnen? Tools - Maven, Gradle, Ant & mehr 7
ABstraCT Mit Applet in ne Datei auf seinem Server schreiben. Tools - Maven, Gradle, Ant & mehr 10
E Verzögerung beim Refresh (F5) mit einem Applet verursachen Tools - Maven, Gradle, Ant & mehr 16
deetee Applet Frage Tools - Maven, Gradle, Ant & mehr 2
S Fehler in einem Upload - Applet (nicht gelöst!!) Tools - Maven, Gradle, Ant & mehr 2
G Variable an zweites Applet übergeben Tools - Maven, Gradle, Ant & mehr 3
M Dringend: Sehr kompliziertes Applet Problem Tools - Maven, Gradle, Ant & mehr 4
O Javascript kommuniziert mit Applet? Tools - Maven, Gradle, Ant & mehr 2
H Spracherkennung mit Applet / Policy bzw. Security Fehler Tools - Maven, Gradle, Ant & mehr 2
zilti Nerviger Hinweis bei Applet- und WS-Fenstern - wieso? Tools - Maven, Gradle, Ant & mehr 3
S Datei-/Verzeichniszugriff von signiertem Applet Tools - Maven, Gradle, Ant & mehr 6
G Signiertes Applet installieren? Tools - Maven, Gradle, Ant & mehr 3
G Applet mit Parameter aus JavaScript Tools - Maven, Gradle, Ant & mehr 5
A Applet Maus Koordinaten ohne MouseMotionListener Tools - Maven, Gradle, Ant & mehr 3
K Applet in Eclipse funktioniert, im Browser nicht Tools - Maven, Gradle, Ant & mehr 7
T Applet soll Java Programm starten Tools - Maven, Gradle, Ant & mehr 2
S Applet pai.nt? Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben