2008-09-30 8 views
4

J'ai besoin d'exécuter une application Java, que nous essayons de porter sur Java 6, sur une boîte NT.Exécution d'une application J6SE sur une boîte NT

je parviens à exécuter Java 5 sur elle (mais pas officiellement pris en charge), mais quand je tente d'exécuter java 6 je reçois l'erreur suivante:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jre1.6.0_05\bin\awt.dll: The specified procedure could not be found 
at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
    at java.lang.ClassLoader.loadLibrary(Unknown Source) 
    at java.lang.Runtime.loadLibrary0(Unknown Source) 
    at java.lang.System.loadLibrary(Unknown Source) 
    at sun.security.action.LoadLibraryAction.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.awt.NativeLibLoader.loadLibraries(Unknown Source) 
    at sun.awt.DebugHelper.<clinit>(Unknown Source) 
    at java.awt.EventQueue.<clinit>(Unknown Source) 
    at javax.swing.SwingUtilities.invokeLater(Unknown Source) 
    at ui.sequencer.test.WindowTest.main(WindowTest.java:136) 

Tout le monde a une idée de comment résoudre ce problème?

Ceci persiste même lorsque je déplace les exécutables java vers un autre répertoire sans espaces dans son nom.

p.s. Je sais, je devrais mettre à jour, mais ce n'est pas à moi ou à mon entreprise - c'est une très grosse bête avec laquelle nous travaillons, et ils ont l'intention de garder NT pour encore 5 ans.

Répondre

1

Java SE 6 requires au moins Windows 2000.

+0

Je sais, mais java 5 aussi, et il fonctionne toujours (http://java.sun.com/j2se/1.5.0/system-configurations.html). –

+0

Probablement NT prend en charge les mêmes API que Windows98SE et ME, mais Java6 a supprimé ceux de sa liste. –

+0

Mich: Juste parce qu'une version d'un programme fonctionne heureusement sur un système d'exploitation non pris en charge n'est pas une garantie que la prochaine version fait. Java 6 a eu quelques réécritures internes assez importantes. Comme le dit Partyzant, les systèmes d'exploitation basés sur les anciennes API MS ont été supprimés pour Java 6, ils ont probablement nettoyé ces dépendances. –

1

Je vous ne l'utilisez une interface graphique, par exemple AWT, Swing ou SWT, vous pouvez essayer de commencer votre application en mode sans tête. Voir http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ pour plus d'informations. Pour démarrer java en mode sans tête, utilisez java -Djava.awt.headless=true

Il prendrait soin de l'UnsatisfiedLinkError. Je ne sais pas si c'est le seul obstacle.

+0

merci, mais c'est une application de swing. Doit avoir une tête entendre :-( –

2

OK, Merci à tous les téléspectateurs et à @Roel Spiker et @Partyzant pour leurs réponses.

Cela ne peut pas être fait. Non, sauf si vous installez Windows 2000 sur la boîte NT. C'est parce que awt.dll fr J6SE utilise de nouvelles méthodes dans User32.dll, qui fait partie du système d'exploitation Windows (lié à kernel.dll et al). Utilisez le dépendant de la dll et voyez par vous-même. Une autre solution possible consiste à modifier légèrement OpenJDK pour utiliser d'autres méthodes disponibles dans Windows NT.

Questions connexes