-
Conversion bean terminal
Bonjour,
Je cherche à convertir un Javabean en contrôle ActiveX, en suivant les étapes de l'ActiveX Bridge de Sun.
Pour cela, il faut se servir du packager.exe situé dans le dossier /bin du jdk (en l'occurence j'utilise jdk1.6.0n et taper dans le terminal windows:
packager.exe <nom du jar> <nom du bean>
Il est bien stipulé qu'on doit créer un jar par bean. Pour commencer, j'ai donc fait un projet avec un seul bean sous NetBeans 5.5.1, s'intitulant JCanvas, avec ma classe JCanvas, dans le package jcanvas (un peu répétitif, je sais^^).
Pour créer mon contrôle activeX, je tape donc:
packager JCanvas.jar JCanvas.jcanvas.JCanvas, et voilà l'erreur obtenue:
C:\Program Files\Java\jdk1.6.0\bin>packager JCanvas.jar JCanvas.jcanvas.JCanvas
Exception in thread "main" java.lang.NoClassDefFoundError: Files\Java\jre1/5/0_0
6\lib\ext\QTJava/zip
La gÚnÚration du fichier .idl a ÚchouÚ
Je ne comprends pas bien. Une histoire de CLASSPATH?
Je précise qu'il n'y a pas de méthode "main" dans mon bean, et que Java fonctionne correctement chez moi sinon.
Merci d'avance pour votre aide.
-
main se praporte au Thread et non à la methode, donc ce n'est pas annormal.
Par contre il semble y avoir un problème d'espace dans le chemin "...Files\Java\jre1.5.0_06\lib\ext\QTJava.zip". C'est une extention que tu as installé?
-
Non, je n'ai pas installé d'extensions particulières.
Et sinon, quand je fais un "set" dans le terminal, j'ai:
CLASSPATH="C:\Program Files\Java\jre1.5.0_06\lib\ext\QTJava.zip"
Ce n'est pas moi qui l'ai configuré^^, je ne sais pas s'il faut que je le change pour que cela fonctionne. Je vois que c'est dans le jre 1.5.0_06, alors que j'ai les jre jusqu'à 1.6.0_03, et que je programme avec le jdk1.6.
Mais mes programmes javas marchent, donc je ne sais pas si ça vient de là.
-
Apparament c'est une extension JAVA pout QuickTime, donc si tu n'en a pas besoin, tu peux l'enlever.
-
Oki, et donc je dois mettre quoi comme nouveau classpath?
-
Je pense tu peux le laisser vide, si tu n'utilises pas ce QTJava.zip.
-
Effectivement, je n'ai plus cette erreur :)
Mais par contre la génération du fichier .idl est toujours problèmatique.
En utilisant le packager (pour tester) du j2sdk1.4.2_16, j'obtiens:
C:\j2sdk1.4.2_16\bin>packager JCanvas.jar JCanvas.jcanvas.JCanvas
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
La gÚnÚration du fichier .idl a ÚchouÚ.
Et en utilisant, le jdk1.6.0, voilà ce que j'obtiens:
C:\Program Files\Java\jdk1.6.0\bin>packager JCanvas.jar JCanvas.jcanvas.JCanvas
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
Impossible de trouver le fichier .idl
Donc dans un cas, une erreur de génération, et dans l'autre impossible de le trouver. (Le terminal m'affiche l'aide de l'éxécution de classes et de jar, je ne sais pas pourquoi !).
Auriez-vous une idée?
-
Au vu que ce qu'il te racconte, tu doit spécifier le jar ou la classe mais pas les deux
-
Dans la doc de l'ActiveX Bridge, l'usage est stipulé:
Packager Usage
Usage: packager [-options] <jar file name> <bean name>
where options include:
-clsid <class-id> CLSID for the packaged bean
-out <output directory> destination directory for the packaged bean
-reg consent to register the Active-X control
Un exemple:
C:\j2sdk1.4.2\bin\packager -clsid {D824B185-AE3C-11D6-ABF5-00B0D07B8581} -out C:\Program Files\Java\j2re1.4.2\axbridge\bin -reg C:\my_bean_jars\jelly.jar sunw.demo.jelly.JellyBean
Donc je pense qu'il faut bien mettre les deux non?
-
Je en sais pas trop une chose est sure c'est que la sytaxe retournée par la commande packager n'a rien a doir avec celle de ta doc.
edit: ha je viens de regarder plus attentivement en fait la syntaxe affichée est celle de la commande java, pas de packager. C'est louche:koi:
-
Oui :(
Je viens de me rendre compte, si ça peut aider, que ma console me renvoie toujours le même résultat si je mets:
packager.exe JCanvas.jar <n'importe quoi>
Il semble donc y avoir un problème avec le .jar non?
Il a été automatiquement généré avec NetBeans, en faisant un projet nommé JCanvas, un package jcanvas, et mon bean JCanvas.java.
-
En fait, c'était mon classpath qui ne concordait pas avec le jdk utilisé. Il fallait le régler à rt.jar.
Voilà, c'est résolu :D !