# Java Erkennung - Java Applett



## MacWale (17. Mai 2005)

Hallo,

habe folgendes Problem, ich habe ein Applett, welches auf einem Client geladen wird. Jedoch habeich folgendes Problem, ich kann nicht feststellen, ob java auf dem System installiert ist oder nicht. Bei Map24.de gibt es eine Java Erkennung, welche feststellt, ob Java installiert ist oder nicht. Wenn Java installiert ist, lädt Map24.de die Karte im Java Applett, im anderen Fall wird nach der weiteren Vorgehensweise gefragt.

wie mache ich das nun?

Habe halt eine Version mit dem Applett und eine Version ohne Applet, wobei, wenn Java installiert ist, die Version mit dem Applet gestartet werden soll.

Gruss

Stephan



Danke im Vorraus


----------



## Sky (17. Mai 2005)

Anonymous hat gesagt.:
			
		

> Habe halt eine Version mit dem Applett und eine Version ohne Applet, wobei, wenn Java installiert ist, die Version mit dem Applet gestartet werden soll.



Ja klar. Weil ohne Java kannst Du halt kein Applet starten.
Alternative: Wenn Java nicht installiert ist, so soll der Benutzer es installieren ansonsten ist es nicht möglich die Funktion zu nutzen.


----------



## L-ectron-X (17. Mai 2005)

Das kannst Du direkt im Applet-Tag deiner Webseite lösen.

```
<applet code="AppletKlasse.class" width=400 height=300>
<!-- Und hier kann nun jeder möglicher HTML-Code stehen.
Du kannst Grafiken laden, Texte ausgeben oder Flash-Dateien laden. -->
</applet>
```
Wenn es also nicht möglich ist, das Applet auszuführen, weil keine Java VM installiert ist, wird der HTML-Code zwischen <applet> und </applet> Tag ausgeführt.


----------



## MacWale (17. Mai 2005)

Hallo,

habe ich auch schon ausprobiert, mit Mozilla, wobei dieser trotz kein java installiert das applet tag erkannt hat, aber dann die Seite von Netscape geladen hat, um das notwendige zu downloaden. Gibt es da noch andere Möglichkeiten?

Gruss

Stephan Schröder


----------



## L-ectron-X (17. Mai 2005)

Interessant, das will ich morgen mal ausprobieren. ???:L

Edit: Hast Recht. Geht wirklich nicht. Scheint eine Fehlimplementierung von Firefox zu sein.


----------



## Spacerat (20. Mai 2005)

Oh ja... z.B. den Umweg über Java-, ECMA- oder J-Script.

Möge es Ausnahmsweise mal nicht unter "Für verirrte" erscheinen...


```
<script language="javascript">
<!--
var out = "";
if(navigator.javaEnabled()) {
    out += "<applet ......>\n"; //Achtung! DoubleQuote muß "escaped" werden! (" -> \")
    out += " <param .....>\n>";
    out += " <NOAPPLETHTML...>\n"; // HTML-Code der ausgeführt wird, wenn Java eingeschaltet ist, jedoch nicht installiert wurde. Der IE z.B. fordert dann zum Dowload und zur Installation der MSJVM auf.
    out += "</applet>\n";
} else {
    out += "<NOJAVAHTML....>\n"; // HTML-Code, der ausgeführt wird, wenn Java weder installiert, noch aktiviert ist.
}

document.write(out);
//-->
</script>
<noscript>
.......
</noscript>
```

natürlich ist dieser Test nicht unbedingt das Nonplus-Ultra, aber so kann man es machen. Es fehlt noch ein Zweig der ausgeführt wird, wenn zwar Java, jedoch kein Java-Script vorhanden ist.

cu Spacerat


----------



## MacWale (24. Mai 2005)

Hallo,

das scheint ja logisch zu sein, aber es scheint dennoch nicht zu funktionieren
Folgender Code:


```
<html>
<head>
<meta content="text/html; charset=ISO-8859-15"
http-equiv="content-type">
<title>Java - Erkennung</title>
</head>
<body>


<script language="javascript">

var out = "";
if(navigator.javaEnabled()) {
out += "<applet code=\"JavaTest\" codebase=\".\" height=\"400\" width=\"400\">\n"; //Achtung! DoubleQuote muß "escaped" werden! (" -> \")
out += " <param name=\"url\" value=\"Neu.html\">\n>";
out += " <NOAPPLETHTML >\n"; // HTML-Code der ausgeführt wird, wenn Java eingeschaltet ist, jedoch nicht installiert wurde. Der IE z.B. fordert dann zum Dowload und zur Installation der MSJVM auf.

out += "</applet>\n";
} else {
out += "<NOJAVAHTML>\n"; // HTML-Code, der ausgeführt wird, wenn Java weder installiert, noch aktiviert ist.
}

document.write(out);

</script>
<noscript></noscript>





</body>
</html>
```

Auf einem Sytsem mit Java und wo Appets funktionieren, funktioniert das alles einwandfrei, jedenfalls mit Mozilla.

Habe dann mit VMWARE eine Umgebung ohne Java simuliert, darauf funktionierte es nicht so, wie es sollte.
Normalerweise solte die Seite doch leer sein oder?

Doch er versucht das Applet zu laden, wobei der IE sagt, dass er das Applet nicht findet, obwohl es im gleichen Ordner befindet.

Wie könnte es denn nun funktionieren?

Gruss

MacWale


----------



## Spacerat (25. Mai 2005)

Die Kleinigkeit, das bei deinem Beispiel, bei der Applet-Klasse "JavaTest" die Endung ".class" fehlt, und das in der Zeile mit dem Parameter hinten eine Spitze Klammer "zu" zuviel ist. Die Beispiel-Tags <NOAPPLETHTML > bzw. <NOJAVAHTML> existieren natürlich nicht. Diese müssen durch beliebige Tags (tables, divs, usw...) ersetzt werden. Sonst sieht das Funktionsfähig aus ???:L  .

cu Spacerat


----------



## MacWale (26. Mai 2005)

Hallo,

ja, das habe ich auch schon mit dem .class ausprobiert, jedoch versucht der IE immer noch, dass Applet zu laden. Es ist aber kein Java auf dem Rechner installiert, das ist eine rohe win 2k installation ohne service pack oder anderes, da ist nur der ie und mozilla drauf.

Das komische, in Mozilla erkennt er, dass überhaupt kein Java installiert ist und er für denn Teil aus, der für "kein javascript aktiviert" ist aus.

da muss es doch eine lösung für geben oder?

Mit freundlichen grüßen

MacWale


----------



## L-ectron-X (26. Mai 2005)

Hast du dir mal die Mühe gemacht, das Applet mit dem von mir geposteten HTML-Code im IE zu starten?
Wenn ja, was macht er? Gibt er den Teil zwischen den applet-Tags aus, oder bleibt das Fenster grau? Was steht in der Java-Console?
Möglicherweise ist die von MS modifizierte VM mit installiert worden.


----------



## MacWale (26. Mai 2005)

Ja, das kann sein, dass die VM mit installiert worden ist, denn der teil bleibt grau. 

Folgendes steht in der Java Console:
Microsoft (R) VM for Java, 5.0 Release 5.0.0.3234
==============================================
?  Hilfe
c  Löschen
f  abschließen
g  bereinigter Speicher
m  Speicherverwendung
q  verlassen
t  Thread-Liste
==============================================
Error loading class: JavaTest
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException: JavaTest
	at com/ms/vm/loader/URLClassLoader.loadClass
	at com/ms/vm/loader/URLClassLoader.loadClass
	at com/ms/applet/AppletPanel.processSentEvent
	at com/ms/applet/AppletPanel.processSentEvent
	at com/ms/applet/AppletPanel.run
	at java/lang/Thread.run

Jetzt müsste sich nach der feststellung des Fehlers die anderen HTML - Tags in Aktion treten. (so muss es sein)

Gruss MacWale


----------



## L-ectron-X (26. Mai 2005)

Du hast sicher nicht das Applet mit dem Sun JDK 1.1 kompiliert, oder?
Denn nur mit diesem kompilierte Klasse kann die von Microsoft mitgelieferte VM ausführen.
Und da eine Java-VM installiert ist, werden die Zeilen zwischen den applet-Tags nicht ausgeführt.
Deaktiviere mal das Java im IE und er wird die Zeilen zwischen den Tags ausführen.


----------



## Christian Duschl (4. Jun 2005)

anbei ein stück code.
so haben wir ein ähnliches problem gelöst:

html:

```
<html>

<body bgcolor='ffff00'>
   <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D935" 
           codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab"
           width="300"
           height="200">
       <PARAM name="code" value="TstJavaVersion.class">
       <PARAM name="type" value="application/x-java-applet;jpi-version=1.4.2">


       <PARAM name="pic14" value="http://192.168.0.228:90/ok_chat.gif">
       <PARAM name="picno14" value="http://192.168.0.228:90/no_chat.gif">
       <PARAM name="bgcolor" value="0,0,255">


       <comment>
          <applet 
              alt="Browser has Java disabled"  
              hspace="22" 
              width="300" 
              height="200" 
              code="TstJavaVersion.class">


       <PARAM name="pic14" value="http://192.168.0.228:90/ok_chat.gif">
       <PARAM name="picno14" value="http://192.168.0.228:90/no_chat.gif">
       <PARAM name="bgcolor" value="0,0,255">


       <a href='http://www.sisochat.de/no_chat.html' target='_blank'>
          [img]http://www.sisochat.de/img/no_chat_ani.gif[/img]</a>"
                  No Java 2 SDK, Standard Edition v 1.4.2 support for APPLET!!
          </applet>
       </comment>
   </OBJECT>
</body>
</html>
```
 


applet: 

```
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import java.net.*;

public class TstJavaVersion extends java.applet.Applet { 
   public String Version = System.getProperty("java.version"); 
   public String Vendor = System.getProperty("java.vendor"); 
   Image image = null;
   String pic14Url;
   String picno14Url;
   String bgcolor;
   String string = "";

   public TstJavaVersion() { 
   }
  
   public void init() {
      setLayout(null);

      try {
         pic14Url = getParameter("pic14");
         picno14Url = getParameter("picno14");
         bgcolor = getParameter("bgcolor");

         if (Version.substring(0,3).compareToIgnoreCase("1.4.2")>0) {
            string = "Java OK"; 

            try {  
               image = getImage(new URL(pic14Url));
            } catch (Exception e){}
         } 
         else if (Version.substring(0,3).compareToIgnoreCase("1.42")>0) {
            string = "Java OK"; 

            try {  
               image = getImage(new URL(pic14Url));
            } catch (Exception e){}
         } 
         else {
            string = "Update required"; 

            try {  
               image = getImage(new URL(picno14Url));
            } catch (Exception e){}
         } 

         if (bgcolor!=null && bgcolor.length()>0) {
            StringTokenizer tok = new StringTokenizer(bgcolor,",");

            String red = tok.nextToken();
            String green = tok.nextToken();
            String blue = tok.nextToken();

            setBackground(new Color(Integer.parseInt(red),Integer.parseInt(green),Integer.parseInt(blue))); 
         } 
      } 
      catch(Exception e) {
         e.printStackTrace();
      }
      paint(getGraphics());
   }


   public void start() {
      paint(getGraphics());
   }

   public  void paint(Graphics g) {
      Font f = getFont(); 
      Rectangle2D r2D;
      Rectangle r;
      int w = getWidth(); 

      g.setColor(Color.BLACK);
      r2D = f.getStringBounds(Vendor,((Graphics2D)g).getFontRenderContext());
      r = r2D.getBounds();
      g.drawString(Vendor,(w-r.width)/2,20); 

      r2D = f.getStringBounds("Version: " + Version,((Graphics2D)g).getFontRenderContext());
      r = r2D.getBounds();
      g.drawString("Version: " + Version,(w-r.width)/2,40); 

      g.setColor(Color.RED);
      r2D = f.getStringBounds(string,((Graphics2D)g).getFontRenderContext());
      r = r2D.getBounds();
      g.drawString(string,(w-r.width)/2,80); 

      if (image!=null) {  
         g.drawImage(image,(w-image.getWidth(null))/2,60,null); 
      } 
   }

   public  void update(Graphics g) {
      paint(g);
   }

   public String getVersion() {
      return Version;
   }

   public String getVendor() {
      return Vendor;
   }

}
```


grüße

_Edit von L-ectron-X: Codetags eingefügt._


----------



## Christian Duschl (4. Jun 2005)

p.s.: Du kannst dir das auf http://www.sisochat.de ansehen, die Versionsprüfung ist rechts oben.
Kann dir den Code auch gerne zuschicken, dann bitte Mail an 
ChristianDuschl@x-Forms.de
Grüße


----------

