Guten Morgen zusammen,
ich werke nun schon ein paar Tage an einem einfachem Uploader und gestern war ich dann auch fast fertig bis mir folgendes passiert ist.
Ich hatte geschaut wie man Parameter an ein Applet übergeben kann und wie man über den HTTPClient Cookies setzen kann. Als ich dies alles eingebaut hatte, funktionierte mein Applet im Browser plötzlich nicht mehr aufgrund der unten stehenden Fehlermeldung. Wenn ich es in Eclipse als Applet starte funktioniert alles problemlos :/ Ich habe nun schon alles mögliche versucht, unter anderem die Änderung bezüglich der Parameter und Cookies zurück gesetzt und letzendlich auch den Quellcode in ein neues Projekt importiert, aber hier hatte ich dann auch den selben Fehler. Kann mir hier vielleicht jemand weiter helfen? Ich poste mal den Quellcode zum Projekt, dieser ist ja zum Glück nicht all zu groß.
Falls sonst ihr sonst noch Infos braucht dann fragt ruhig nach. Ich wäre wirklich dankbar wenn mir bei diesem Problem jemand helfen könnte
PS: Bibliotheken sind definitiv alle drin und auch richtig. Wie gesagt, in Eclipse als Applet gestartet funktioniert das ganze auch prima. Signiert ist das Applet übrigens auch. :/
Vielen Dank an alle die sich mit meinem Problem beschäftigen!
JUploader.java
index.php
Fehler
[EDIT]// Edit:
Okay... es ist wie fast immer... man sucht ewig nach dem Fehler, und kurz nachdem man in nem Forum gefragt hat findet man ihn selbst -.- Hat sich damit erledigt, Lösung war wie folgt
Einfach die Bibliotheken in das HTML-Applet Tag mit einbinden - Finde ich zwar seltsam, da der Fehler erst nach "HttpClient httpclient = new DefaultHttpClient();" auftritt, er aber diese Klasse schon garnicht kennen dürfte aber okay. Trotzdem danke für alle die sich die Mühe gegeben haben das durch zu lesen
[/EDIT]
ich werke nun schon ein paar Tage an einem einfachem Uploader und gestern war ich dann auch fast fertig bis mir folgendes passiert ist.
Ich hatte geschaut wie man Parameter an ein Applet übergeben kann und wie man über den HTTPClient Cookies setzen kann. Als ich dies alles eingebaut hatte, funktionierte mein Applet im Browser plötzlich nicht mehr aufgrund der unten stehenden Fehlermeldung. Wenn ich es in Eclipse als Applet starte funktioniert alles problemlos :/ Ich habe nun schon alles mögliche versucht, unter anderem die Änderung bezüglich der Parameter und Cookies zurück gesetzt und letzendlich auch den Quellcode in ein neues Projekt importiert, aber hier hatte ich dann auch den selben Fehler. Kann mir hier vielleicht jemand weiter helfen? Ich poste mal den Quellcode zum Projekt, dieser ist ja zum Glück nicht all zu groß.
Falls sonst ihr sonst noch Infos braucht dann fragt ruhig nach. Ich wäre wirklich dankbar wenn mir bei diesem Problem jemand helfen könnte
PS: Bibliotheken sind definitiv alle drin und auch richtig. Wie gesagt, in Eclipse als Applet gestartet funktioniert das ganze auch prima. Signiert ist das Applet übrigens auch. :/
Vielen Dank an alle die sich mit meinem Problem beschäftigen!
JUploader.java
Java:
package de.XXXXX.juploader;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
public class JUploader extends JApplet {
private JFileChooser fc;
private JButton btnUpload;
private String uploadScript = "";
private String sessionID = "";
/**
* Constructor
*/
public JUploader() {
}
@Override
public void init() {
super.init();
initialize();
}
/**
*
*/
private void initialize() {
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{88, 0};
gridBagLayout.rowHeights = new int[]{0, 0};
gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
getContentPane().setLayout(gridBagLayout);
GridBagConstraints gbc_btnUpload = new GridBagConstraints();
gbc_btnUpload.fill = GridBagConstraints.BOTH;
gbc_btnUpload.gridx = 0;
gbc_btnUpload.gridy = 0;
getContentPane().add(getBtnUpload(), gbc_btnUpload);
}
/**
*
* @return
*/
public JFileChooser getFileChooser() {
if(this.fc == null) {
fc = new JFileChooser();
}
return fc;
}
/**
*
* @return JButton
*/
private JButton getBtnUpload() {
if (btnUpload == null) {
btnUpload = new JButton("Upload");
btnUpload.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
uploadScript = JUploader.this.getParameter("script");
sessionID = JUploader.this.getParameter("sessionID");
JOptionPane.showMessageDialog(null,sessionID,"Upload", JOptionPane.INFORMATION_MESSAGE);
fc = getFileChooser();
int returnVal = fc.showOpenDialog( JUploader.this );
String fileName = "";
if ( returnVal == JFileChooser.APPROVE_OPTION ) {
File aFile = fc.getSelectedFile();
fileName = aFile.getAbsolutePath();
}
if(fileName != null && fileName instanceof String && fileName.length() > 0) {
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("PHPSESSID", JUploader.this.sessionID);
cookieStore.addCookie(cookie);
HttpContext httpContext = new BasicHttpContext();
httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpPost httppost = new HttpPost("http://<IP+PORT>/juploader/upload.php");
System.out.println("Filename: " + fileName);
File file = new File(fileName);
MultipartEntity mpEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
ContentBody cbFile = new FileBody(file, "multipart/form-data");
mpEntity.addPart("uploadfile", cbFile);
httppost.setEntity(mpEntity);
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response;
try {
response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
System.out.println(response.getStatusLine());
if (resEntity != null) {
JOptionPane.showMessageDialog(null,EntityUtils.toString(resEntity, "UTF-8"),"Upload", JOptionPane.INFORMATION_MESSAGE);
}
httpclient.getConnectionManager().shutdown();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
}
return btnUpload;
}
}
index.php
HTML:
<APPLET archive="java/JUploader.jar" code="de.XXXXX.juploader.JUploader.class" align="baseline" width="100" height="25" name="JUploader">
<PARAM NAME="script" VALUE="http://<IP+PORT>/juploader/upload.php">
<PARAM NAME="sessionID" VALUE="0">
<PARAM NAME="java_code" VALUE="de.XXXXX.juploader.JUploader.class">
<PARAM NAME="java_archive" VALUE="java/JUploader.jar">
<PARAM NAME="java_type" VALUE="application/x-java-applet;jpi-version=1.4">
<PARAM NAME="scriptable" VALUE="true">
No Java 2 SDK, Standard Edition v 1.4 support for APPLET!!
</APPLET>
Fehler
Code:
Java-Plug-in 1.6.0_35
Verwendung der JRE-Version 1.6.0_35-b10-428-10M3811 Java HotSpot(TM) 64-Bit Server VM
Home-Verzeichnis des Benutzers = /Users/XXXXX
----------------------------------------------------
c: Konsolenfenster schließen
f: Objekte in Finalisierungswarteschlange finalisieren
g: Speicherbereinigung
h: Diese Hilfemeldung anzeigen
l: ClassLoader-Liste ausgeben
m: Speicherbelegung anzeigen
o: Protokollierung auslösen
q: Konsole ausblenden
r: Richtlinien-Konfiguration neu laden
s: System- und Bereitstellungseigenschaften ausgeben
t: Threadliste ausgeben
v: Thread-Stack ausgeben
x: ClassLoader-Cache löschen
0-5: Trace-Stufe auf <n> setzen
----------------------------------------------------
java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3136)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException
at de.XXXXXX.juploader.JUploader.getBtnUpload(JUploader.java:104)
at de.XXXXXX.juploader.JUploader.initialize(JUploader.java:78)
at de.XXXXXX.juploader.JUploader.<init>(JUploader.java:61)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at sun.plugin2.applet.Plugin2Manager$13.run(Plugin2Manager.java:3060)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:663)
at java.awt.EventQueue$2.run(EventQueue.java:661)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.ClientProtocolException
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:252)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 24 more
Ausnahme: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException
[EDIT]// Edit:
Okay... es ist wie fast immer... man sucht ewig nach dem Fehler, und kurz nachdem man in nem Forum gefragt hat findet man ihn selbst -.- Hat sich damit erledigt, Lösung war wie folgt
Einfach die Bibliotheken in das HTML-Applet Tag mit einbinden - Finde ich zwar seltsam, da der Fehler erst nach "HttpClient httpclient = new DefaultHttpClient();" auftritt, er aber diese Klasse schon garnicht kennen dürfte aber okay. Trotzdem danke für alle die sich die Mühe gegeben haben das durch zu lesen
Zuletzt bearbeitet: