Будет ли Java, скомпилированная в Windows, работать в Linux? - PullRequest
10 голосов
/ 08 октября 2010

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

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

Спасибо !!!

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

/ usr / java / jdk1.6.0_21 / jre / bin / java -jar xxxxx.jar

java -version для проверкиесли ваша реальная Java работает или все еще GCJ

Ответы [ 10 ]

12 голосов
/ 08 октября 2010

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

5 голосов
/ 08 октября 2010

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

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

4 голосов
/ 08 октября 2010

Да.Форматы классов и jar специально кроссплатформенны.

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

3 голосов
/ 08 октября 2010

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

2 голосов
/ 08 октября 2010

Java говорит: " Пиши один раз, беги куда угодно ".

1 голос
/ 09 октября 2010

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

1 голос
/ 08 октября 2010

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

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

1 голос
/ 08 октября 2010

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

1 голос
/ 08 октября 2010

Вы используете KDE?Какая тема?У меня вчера была проблема с тем, что в теме «Чистые взгляды» есть много ошибок, отображающих виджеты.Попробуйте «Кислород».

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

0 голосов
/ 08 октября 2010

Ява очень транспортабельна. Скорее всего, ваша ВМ отличается. Хотя виртуальные машины с открытым исходным кодом становятся очень хорошими, я рекомендую попробовать с виртуальной машиной Sun. У меня никогда не было проблем с запуском какого-либо кода.

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

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

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

...