Будет ли Java, скомпилированная в windows, работать в Linux?

моя Java-программа находится в рабочем состоянии, когда я использую ее под Windows(Eclipse и Bluej). Я сжимаю его в банку, отправляю в свою красную шляпу и хлопаю. ничего не работает. Он ломается на самых странных вещах, таких как текстовое поле, текст не будет отображаться, JPasswordfield просто исчез, JAVA AWT ROBOT тоже умирает... список продолжается, сначала я думал, что это должен быть мой Linux JRE устарел, но я установил последнюю JRE, а затем JDK без каких-либо улучшений. У меня такое чувство, что я скучаю по пониманию Java кросс способность плат. Я также попытался удалить все мои функции и кишки, чтобы увидеть, что ломается, но кажется, что каждая вторая вещь ломается, кроме некоторых основных компонентов GUI и большинства материалов back end. в основном любая вещь, которая использует какую-то вещь, взорвется у меня на лице, например, создание текстового поля в поле пароля...

Это моя первая публикация;) пожалуйста, будьте добры к новичку!

спасибо!!!

решена!!! Ура. Проблема решено!!! Это было потому, что мой путь Java не установлен, поэтому мой GCC / GCJ прыгнул вместо моей oracle java, даже если я использовал java-jar xxx.jar - ... поэтому я поместил путь к каталогу java из моего java-jar xxx.jar и работала как по маслу. если вы не установили путь, вы должны сделать это вручную

в/usr/Ява/jdk1.6.0_21/среда JRE/bin и/Ява -фляга ХХХХХ.Джар

java-версия, чтобы проверить, работает ли ваша реальная java или она все еще GCJ

10 ответов


пользователи Linux часто запускают java-программы с gcj вместо java. Убедитесь, что используется правильный исполняемый файл.


проверьте, что вы используете JRE Sun (Oracle) на своей машине Linux, а не какую-то стороннюю реализацию Java, такую как gcj или подобные.

по моему опыту, приложения Java довольно портативны, пока вы придерживаетесь одного и того же поставщика JVM/runtime на каждой цели, но реализации Java от разных поставщиков могут вести себя по-разному друг от друга.


да. Форматы class и jar намеренно являются кроссплатформенными.

вы абсолютно уверены, что ваш файл jar был скопирован правильно на вашу машину Linux? Если вы использовали ftp, важно использовать двоичный файл вместо передачи ascii.


зависит ли ваше приложение от каких-либо внешних библиотек, которые также должны быть доступны на вашей машине Linux?


Java говорит, что: " напишите один раз, запустите anywhere".


вы используете KDE? Какая тема? Вчера у меня была проблема, что тема "Cleanlooks" имеет много ошибок рендеринга виджетов. Попробуй "Кислород".

Если вы можете, попробуйте код в другом окне Linux (возможно, у него есть аппаратный дефект). Запустите "memtest" (должна быть опция в загрузчике или на вашем спасательном компакт-диске).


качание должно быть полно портативно. Попробуйте использовать металлический внешний вид, который широко поддерживается. У меня есть сомнения по поводу java.awt.Robot хотя и не был бы удивлен, если бы это было источником ваших проблем.


У меня есть приложение Swing, которое я распространил через Java Web Start, которое я не обновлял с 2004 года, которое, как я знаю, все еще отлично работает на Mac OS X, Windows и Linux. Я запустил его на днях, потому что кто-то прислал мне по электронной почте вопрос об этом. Первоначально он был написан на Windows, но никогда не показывал никаких проблем в других операционных системах или даже в гораздо более поздних версиях Java.

JVM представляет очень ровное игровое поле через большое разнообразие платформ и API Java хорошо реализован, чтобы работать одинаково и предлагать одинаковую функциональность. Держу пари, что вы обнаружите, что эта проблема совершенно не связана с вашим Java-кодом. В дополнение к предложению попробовать свое приложение на другой машине с той же ОС, не забудьте попробовать другие приложения Java, работающие на том, который дает проблемы. Попробуйте мой собственный HotSheet:http://www.johnmunsch.com/projects/HotSheet/ или игра, как Legerdemain: http://roguelikefiction.com/?page_id=6 чтобы увидеть, будут ли они работать.


в linux может быть важно использовать Sun JDK / JRE и не openjdk, который является реализация официального sun java jdk. Так что это может быть, хотя не уверен.


Java очень транспортабельные. Скорее всего, ваша виртуальная машина отличается. Хотя VMs с открытым исходным кодом становятся очень хорошими, я рекомендую попробовать с VM Sun-у меня никогда не было проблем с его запуском любого кода.

кроме того, если вы используете какие-либо библиотеки с компонентами машинного языка, они должны быть разными (я заметил это с некоторыми графическими библиотеками, которые обращаются к 3D-подсистеме платформы)

но сама Java будет легко переноситься в любую систему, которая имеет те же библиотеки и хорошую виртуальную машину очень хорошо-я делаю это все время и делаю это в течение десяти лет и буквально никогда не было проблем. Это работает клиент / серверные системы, где клиенты и сервер были на разных платформах, PC/Mac & Unix и даже встроенные системы-вещи просто порты.

теперь апплеты, работающие в разных браузерах, или визуально пытаются соответствовать шрифтам на машинах, которые не содержат один и тот же шрифт-ничто не поможет вам там.