2010-08-22 20 views
4

J'exporte le fichier try.jar en utilisant des bibliothèques Java 32 bits. Sur le site client, j'ai des bibliothèques Java 64 bits. Peut try.jar se comporter 64 bits exécutable?le fichier JAR exporté en 32 bits peut-il être exécuté en utilisant des bibliothèques Java 64 bits?

Par exemple, j'ai

Runtime rt = Runtime.getRuntime(); 
s = rt.exec("someExecutable"); 

le binaire someExecutable est en 64 bits et en utilisant ce code avec 32 bits des bibliothèques Java semble ne fonctionne pas. Mon problème à ce problème est d'exporter try.jar en utilisant des bibliothèques Java 32 bits (parce que mon environnement est en 32 bits) et d'exécuter try.jar en utilisant des bibliothèques 64 bits dans le site client. Cette approche est-elle correcte ou d'autres suggestions?

lorsque j'exécute someExecutable directement (pas de java impliqué) qui est 64 bits sur le site client Cela fonctionne bien (site client est également 64 bits.). Mais quand j'utilise s = rt.exec ("someExecutable"); Ça ne marche pas. les bibliothèques java (jre executables téléchargées sur java.sun.com) sont maintenant en 32 bits sur les sites clients et de développement. Mon problème est-il résolu si j'installe des bibliothèques 64 bits sur le site client, mais pas sur le site de développement?

+1

Quelle est l'erreur exacte que vous obtenez? – clamp

+0

lorsque je cours someExecutable qui est 64 bits sur le site client, je travaille bien (site client est également 64 bits.). Mais quand j'utilise s = rt.exec ("someExecutable"); Ça ne marche pas. les bibliothèques java (jre executables téléchargées sur java.sun.com) sont maintenant en 32 bits sur les sites clients et de développement. Mon problème est-il résolu si j'installe des bibliothèques 64 bits sur le site client, mais pas sur le site de développement? – ogzylz

Répondre

2

Vous aurez besoin d'un binaire someExecutable disponible sur l'architecture du système d'exploitation sur laquelle vous souhaitez exécuter votre programme.

Ce n'est en fait rien à voir avec Java - tout ce que Java fait va au système d'exploitation sous-jacent et essayer d'exécuter la commande dans la chaîne que vous passez à Runtime.exec().

+0

mais quand j'ai couru someExecutable dans le terminal cela fonctionne bien. Mais l'utilisation de Runtime.exec ("someExecutable") ne fonctionne pas? Je pensais que le problème est que Java libs 32 bits et someExecutable est 64 bits ?? Je peux me tromper .. – ogzylz

+0

32bit vs 64bit ne devrait pas être un problème ici ... Je pense que vous êtes en train d'assombrir le problème avec ce train de pensée. Pouvez-vous montrer votre erreur ou une trace de pile ou quelque chose comme ça? –

+0

le flux d'entrée ne donne rien. \ N someExecutable est drecog -i ...(d'autres paramètres) \ flux d'erreur donne le manuel de drecog \ lorsque "./drecog" dans le terminal il donne aussi le manuel de drecog – ogzylz

0

Quel est le problème que vous obtenez quand vous faites cela?, Si vous utilisez du code Java à 100%, JRE devrait tout faire pour la transparence.

4

Les librairies Java ne sont pas le problème ici. Si vous voulez exec someExecutable, ce programme doit être en 32 bits pour un environnement 32 bits.

Les bibliothèques Java ne sont pas 32 ou 64 bits, elles sont en Java ByteCode. Donc, ils peuvent être exécutés sur n'importe quelle JVM 64 ou 32 exactement de la même manière.

+0

Vous pouvez démarrer des programmes 64 bits à partir d'un environnement Java 32 (en supposant que le système d'exploitation prend en charge 64 bits). Les bibliothèques Java peuvent contenir du code natif en plus du code octet. –

+0

J'ai pensé à cela, mais dans ce cas et avec ce problème, je doute sérieusement que le problème réside sur le code natif. –

+0

J'ai résolu le problème. Ce n'est pas lié à la question 32/64 bits, désolé pour la confusion. Il est bon de démarrer des programmes 64 bits à partir d'un environnement Java 32. Le problème est que Runtime.exec ("drecog -i ...> rec.log"); le "> rec.log" causait le problème. Lorsque je supprime cette partie, cela fonctionne très bien. Je donne pourquoi "> rec.log" partie provoque le problème. – ogzylz