# Java Applikation incl. dll unter Linux ausführen?



## blaubär (17. Dez 2007)

Hallo Freunde,

ich bin neu hier, und verstehe von Java Entwicklung nur ein paar Grundlagen. Vielleicht kann mir ja einer von euch bei meinem kleinen Problem weiterhelfen:

Ich benutze zur Administration erweiterter Dienste einer Telefonanlage ein Java tool namens IC-Manager.
 Standardmässig ist es nur für die Installation unter Windows vorgesehen. 
"Nun", dachte ich mir, "wenn das Java ist, dann läuft das bestimmt auch unter Linux.." 

Ich habe mir dann die das Startscript "ICManager.bat" angeguckt und es soweit ich konnte, portiert:


```
rem===========================ICManager.bat=============================

setlocal
rem -
rem - Copyright (c) 1999-2001 Avaya Inc USA
rem -            All rights Reserved
rem -
set DIR=C:\Programme\Avaya\IC71
set JAR=%DIR%\Java\jar
set PATH=%DIR%\bin;%DIR%\Java\bin;%PATH%

set WEBSITECLASSES=%JAR%\website.jar;%JAR%\xml.jar;%JAR%\xalan.jar;%JAR%\servlet.jar;

set CLASSPATH="%DIR%\etc;%JAR%\admin.jar;%JAR%\core.jar;%JAR%\icmanager.jar;%JAR%\jcbwt362j.jar;%JAR%\tools.jar;%JAR%\jaxp.jar;%JAR%\xerces.jar;%WEBSITECLASSES%;%JAR%\ImcClient.jar"

start javaw -Xms20m -Xmx192m -Dsun.java2d.noddraw=true -DAVAYA_IC_HOME="%DIR%" -cp %CLASSPATH% com.quintus.OpCon.OpCon 2> "%DIR%\logs\ICManager_bat.log"

endlocal

rem===========================ICManager.bat=============================
```

Daraus habe ich folgendes gemacht:



```
;===========================ICManager.sh=============================

#!/bin/sh
#rem -
#rem - Copyright (c) 1999-2001 Avaya Inc USA
#rem -            All rights Reserved
#rem -
export DIR=/opt/Avaya/IC71
export JAR=$DIR/Java2/jar
export PATH=$DIR/bin:$DIR/Java2/bin:$PATH
export WEBSITECLASSES=$JAR/website.jar:$JAR/xml.jar:$JAR/xalan.jar:$JAR/servlet.jar:
export CLASSPATH="$DIR/etc:$JAR/admin.jar:$JAR/core.jar:$JAR/icmanager.jar:$JAR/jcbwt362j.jar:$JAR/tools.jar:$JAR/jaxp.jar:$JAR/xerces.jar:$WEBSITECLASSES:$JAR/ImcClient.jar"
java -Xms20m -Xmx192m -Dsun.java2d.noddraw=true -DAVAYA_IC_HOME="$DIR" -cp $CLASSPATH com.quintus.OpCon.OpCon

;===========================ICManager.sh=============================
```

zusätzlich habe ich noch den Installationsordner c:\Programme\Avaya\IC71 nach /opt/Avaya/IC71 kopiert, 
und, da das Programm seine eigene Javaversion haben soll, habe ich die passende Version unter:

/opt/Avaya/IC71/Java2 

bereitgestellt. Die mitgebrachten jar-files aus dem Unterordner jar sind ebenfalls an entsprechender Stelle 
zu finden.
 Soweit so gut. Beim start von ICManager.sh bekomme ich nun folgende Fehlermeldung (auf der Konsole):


```
admin@supervisor05:/opt/Avaya/IC71/bin$ ./ICManager.sh
Unable to find library: no CtiNmi in java.library.path. 
Unable to find library: no CtiNmi in java.library.path. 
Unable to find library: no CtiNmi in java.library.path. 
admin@supervisor05:/opt/Avaya/IC71/bin$
```

"CtiNmi" habe ich schon in der "/opt/Avaya/IC71/bin/CtiNmi.dll" ausgemacht. Den Suchpfad habe ich auf dieses Verzeichnis erweitert (siehe ICManager.sh).

Auch die Hinzunahme von 
	
	
	
	





```
-Djava.library.path=/opt/Avaya/IC71/bin/
```
 zum Programmaufruf funktioniert nicht. Der Grund ist meiner Ansicht nach der, dass die Windows-dll auch nur in einer Windowsumgebung verarbeitet werden kann.

Meine Frage ist nun:

Habe ich noch eine Chance, den IC-Manager trotzdem unter Linux zum Laufen zu kriegen? 
Möglicherweise findet sich ja hier jemand, der für ein derartiges Problem einen Lösungsansatz hat.

Danke schon mal.

Viele Grüße

blaubär


----------



## tuxedo (17. Dez 2007)

www.winehq.com

Damit kriegst du sehr viele Windows-Programme unter Linux zum laufen.

Wie kommuniziert das Programm denn nach außen? Extra eingebaute Hardware? Serielles RS232 Kabel? Netzwerk? ISDN-Karte?

- Alex


----------



## Wildcard (17. Dez 2007)

Nein, eine Windows dll funktioniert natürlich nicht auf Linux. Da wirst du schon eine passende .so brauchen.


----------



## tuxedo (17. Dez 2007)

Ähm, wozu ist dann WineHQ erfunden worden?
Oder hast du meinen Post "übersehen" @Wildcard?

- Alex


----------



## Wildcard (17. Dez 2007)

Die beiden Posts waren nahzu gleichzeitig.
Aber davon abgesehen:
Wie soll das deiner Meinung nach funktionieren?
Eine komplette Windows JVM in Wine laufen lassen. Ich sehe da kaum eine Chance.

PS: WineHQ ist übrigens eine Domain, das Programm heißt Wine  :wink:


----------



## DocRandom (17. Dez 2007)

> Eine komplette Windows JVM in Wine laufen lassen. Ich sehe da kaum eine Chance.


..geht schon, nur wirds sehr laaaaaahm!
lg
DocRandom


----------



## Wildcard (17. Dez 2007)

DocRandom hat gesagt.:
			
		

> ..geht schon, nur wirds sehr laaaaaahm!


Komplett? Mit allen 8 Milliarden Funktionen? Ich bin da sehr skeptisch.


----------



## tuxedo (18. Dez 2007)

Aaaalso. Als "alter Wine-Nutzer" kann ich sagen:

Nein, es wird nicht laaaaangsam (http://www.winehq.org/site/myths#slow). Damit lässt sich sogar sehr performant "World of Warcraft" spielen. Onlinebanking via StarMoney oder andere Sachen gehen auch prima. Einen wirklich spürbaren Unterschied zu Windows (gleiche Maschine) ist mir nicht aufgefallen. Frames hab ich jedoch nicht gemessen/gezählt.

Und nein, komplett zu 100,00% wird nicht alles unterstützt. Wer würde denn dann noch Windows einsetzen? Das Wine-Team hinkt M$ immer etwas hinterher. Schließlich gibt M$ ja den Source nicht preis, so dass den Wine-Jungs nur Reverse-Engineering bleibt. Aber das können die mittlerweile ziemlich gut. 

Im Endeffekt bleibt einem nix anderes übrig als es auszuprobieren oder es mit Vorurteilen gleich in die Ecke zu schieben. Auskunft gibt die AppDatabase ...


----------



## blaubär (18. Dez 2007)

Hallo,

danke für die Antworten. Wine ist mi bekannt, aber es war nicht das Ziel, solch einen umständlichen Weg zu gehen. Ich habs trotzdem mal kurz probiert - mit "wineconsole"- wine selbst kann ja nur Windows-exe's ausführen. Ergebnis: Der prompt kommt nach 3 Sek ohne Fehlermeldung zurück. Jetzt könnte ich natürlich noch zusehen, dass ich die Variablen irgendwie anders definiere, und "javaw.exe" mit wine aufrufe; das hab ich dann aber gelassen. Der IC-Manager ist schon sicherheitskritisch: Ein Absturz an der falschen Stelle kann das dahinter stehende AIC schon stark in Mitleidenschaft ziehen.

@alex0801: Der ICManager benutzt die Netzwerkschnittstelle. Es handelt sich um das Admin tool des "Avaya Interaction Center".

Grüße

blaubär


----------



## tuxedo (18. Dez 2007)

Naja, wenn Wine nicht hilft oder nicht eingesetzt werden soll, dann sehe ich keine Chance das Ding zum laufen zu kriegen wenn die DLL nicht für Linux gemacht ist. Entweder du organisierst eine linuxtaugliche Version der DLL, oder du kommst um Wine oder eine virtualisierung (VMWare, Virtualbox, QEmu, ...) von Windows nicht drum rum.

Wieso muss das Ding unbedingt unter Linux laufen?


----------



## blaubär (18. Dez 2007)

Es *muss* nicht unbedingt unter Linux laufen. Ich *möchte* es nur, weil mein Admin-Rechner halt unter Linux läuft. Z.Zt. greife ich auf den IC-Manager per rdp (auf einer Windowskiste) zu.

Wine-Expertern-Frage: Kann man evtl. die dll dekompilieren und als ".so" bereitstellen?


----------



## tuxedo (18. Dez 2007)

D.h. du willst dir einen Rechner sparen? Dann benutze doch Virtualbox oder VMWare (ich tendiere ja eher zu Virtualbox weils einfacher und schneller beim einrichten ist).

Die DLL dekompilieren und wieder kompilieren ist, mal abgesehen davon dass ich nicht weiß ob das überhaupt zuverlässig funktioniert, wohl nicht zulässig, bzw ich kanns mir nicht vorstellen.


----------

