Чем запускать java файлы
Перейти к содержимому

Чем запускать java файлы

  • автор:

Компилируем и запускаем Java-файлы из Notepad++

Приветствую всех! Для начала хочу сказать, что я изучаю курс Java 1 и, по рекомендации преподавателя, решил воспользоваться Notepad++ для экспериментов с кодом и подготовки домашнего задания. Нужно было настроить Notepad++ таким образом, чтобы я мог запускать код и сразу видеть результат выполнения программы. В интернете я нашёл несколько способов настройки Notepad++ под работу с Java. Самый быстрый из них я немного дополнил и хочу показать вам. За основу я взял данный гайд на английском — там всё кратко и сжато. Я же попытаюсь подробно описать процесс настройки, расскажу еще о нескольких дополнительных возможностях и решении некоторых проблем программы и плагина.

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

Готовим Java-инструменты и Notepad++

  1. У вас должны быть установлены JDK + JRE и правильно настроена переменная среды PATH.
  2. Скачиваем и устанавливаем последнюю версию NotePad++. Выберите версию 32-bit или 64-bit. Я буду показывать пример с 64-bit.
  3. Скачиваем плагин NppExec. По ссылке представлены несколько версий. Я выбрал v0.5.9.9 dev, архив — NppExec20160628_dll_x64-2.zip. В имени архива указана версия — x64. Если вы скачали Notepad++ для 32-bit, вам нужен другой файл — NppExec20160628_dll.zip . Если не получится, попробуйте другую версию — главное чтобы там был NppExec.dll файл. Распакуйте архив в директорию, где у вас установлена Notepad++\plugins. В моём случае полный путь выглядит так: «C:\Program Files\Notepad++\plugins«. Чтобы плагин заработал, перезапустите Notepad++, если он был запущен ранее.

Настраиваем плагин NppExec

В меню выберите Плагины (Plugins) -> NppExec и выполните следующие действия:

  • отключите «Console Command History»;
  • включите «Save all files on execute»;
  • включите «Follow $(CURRENT_DIRECTORY)».

4. Добавьте команду компиляции:

  • Перейдите в Плагины (Plugins) > NppExec > Execute. (или просто нажмите F6 — горячая клавиша).
  • В открывшемся окне введите следующие команды:
  • Нажмите кнопку Save. и введите имя скрипта, например — Compile, так как этот скрипт как раз будет выполнять компиляцию. Нажмите Save.

5. Чтобы добавить новые команды, снова перейдите в Плагины (Plugins) > NppExec > Execute. У вас будет в окне “ Command(s): «cd “$(CURRENT_DIRECTORY)” javac $(FILE_NAME)». Здесь нет кнопки для добавления новой команды, поэтому вы просто заменяем код на новый:

Затем Save. Обязательно измените имя скрипта, к примеру — «Run». Этот скрипт будет запускать выполнение программы. Нажмите Save.

Повторите действия ещё раз, введите:

cd «$(CURRENT_DIRECTORY)»
javac $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
java $(NAME_PART)
:exit

Сохраните и назовите скрипт — Compile and run, по смыслу уже понятно, что данный скрипт сначала будет компилировать, а затем запускать программу. Нажмите ОК.

6. Добавьте ваши команды в меню Макросы (Macro). Для этого:

1) Перейдите в Плагины (Plugins) > NppExec > Advanced options…

2) Поставьте галочку напротив Place to the Macros submenu.

3) Введите «Run» в поле » Item name: «, затем нажмите на всплывающий список » Associated script: » и выберите скрипт под названием Run.

После этого нажмите на » Add/Modify «

и в области Menu items * вы увидите, что появилась строка » Run :: Run «.

Повторите эти действия с скриптами Compile и Compile and run, чтобы они тоже появились в окне Menu items *.

Нажмите Ок и перезапустите Notepad++.

7. Протестируйте созданные вами скрипты, открыв или создав java-файл. К примеру, создадим файл Test.java (при сохранении обязательно укажите тип — Java source file (*.java) ) и запишем в него:

public static void main(String[] args)

8. Перейдите в меню Макросы (Macro) и нажмите Compile. Затем снова зайдите в меню и нажмите Run. Или вы можете выполнить два действия сразу, по кнопке Compile and run.

9. Если вы получили ошибку при компиляции или выполнении программы, измените команду Compile или Run (в зависимости от того где у вас ошибка).

Если ошибка при компиляции измените команду Compile:

C:\Program Files\Java\jdk-9\bin\javac $(FILE_NAME)

Если ошибка при выполнении, измените команду Run:

C:\Program Files\Java\jdk-9\bin\java $(NAME_PART)

Во второй строке укажите путь к файлу javac или java на вашем компьютере. Путь к этим файлам может отличаться, будьте внимательны! Ошибка может быть вызвана тем, что Windows не знает путь к программе javac, или тем, что вы используете Notepad++ Portable Version. После изменений в Compile и Run не забудьте также про Compile and run.

Вот пример ошибки:

По сообщениям из консоли видно, что компиляция прошла успешно, но при выполнении программы произошла ошибка версий, а также не были найдены java.dll и SE Runtime Environment. Поэтому мы указываем путь для выполнения программы в скриптах Run и Compile and run.

После этого программа выполняется успешно:

10. Чтобы было удобнее компилировать и выполнять программы, настроим горячие клавиши. Перейдите в меню Запуск (Run) и выберите «Изменить горячую клавишу/удалить команду (Modify Shortcut/Delete Command…)».

Во вкладке Plugin Commands настройте горячие клавиши для быстрого запуска скриптов. Найдите имена Compile, Run, Compile and Run, по двойному клику задайте удобное вам сочетание клавиш для быстрого запуска. У меня, например, Compile and Run настроен на клавиши Ctrl + Shift + C.

После написания кода достаточно будет нажать эту комбинацию клавиш, чтобы программа была скомпилирована и запущена.

11. Если вы хотите изменить цветовую схему (тему) или выбрать другой шрифт, настроить его размер и начертание, выберите меню Опции (Settings) > Определение стилей (Style configurator…) :

12. При написании кода мне очень помогает автовставка символов. Например, когда я ставлю круглую скобку “(“, закрывающая скобка “)“ ставится автоматически. Кто работал в средах разработки (наподобие IDEA IntelliJ), знаком с этим и согласится, что это, вроде бы, мелочь, а удобно. По умолчанию автовставка выключена. Для её включения зайдите в Опции (Settings) > Настройки (Preferences) > Автозавершение (Auto-Completion) и выберите, что вам нужно. Если нужных символов нет, можете сами создать “Заказную пару”(Matched pair).

13. При выполнении программ вы можете столкнуться с проблемой кодировки в консоли. Пример:

Решается это очень просто. Переходим в меню Плагины (Plugins) > NppExec > Console Output

И здесь вы должны выставить в значении Console Output is — «UTF-8».

Если вдруг это не помогло, попробуйте поставить галочку — Console Input is the same as Output.

14. Если вы хотите отключить проверку орфографии, нажмите кнопку «Spell Check Document Automatically (ABC)» на панели задач. После этого

кириллица не будет подчеркиваться красным. Вы также можете включить/выключить консоль по кнопке, которая расположена справа — «Show Console Dialog».

В разделе Плагины (Plugins) > NppExec > Advanced Options вы можете настроить отображение консоли при запуске программы. Выберите нужный вариант (Yes/No/Auto) в разделе Console — опция Visible (on start).

А ещё вы можете выбрать язык по умолчанию, для этого перейдите в Опции (Settings) > Настройки (Preferences) > Новый документ (New Document) и выберите Синтаксис по умолчанию (Default language). В нашем случае — Java. Теперь, когда вы открываете новую вкладку или запускаете Notepad++ с пустым файлом, типом по умолчанию будет Java и вам не придется выбирать его каждый раз.

15. Для удобства восприятия вы можете отключить системные (внутренние) сообщения консоли. Перейдите по вкладке Плагины (Plugins) > NppExec > No internal messages. После того, как вы поставите галочку, выполнение программы в консоли будет выглядеть так :

При этом ошибки будут всё равно выводиться в консоль, что весьма удобно:

Надеюсь, эта инструкция была вам полезна. Если заметите ошибки или неточности, напишите, и я исправлю! Всем удачи!

Руководство по Java 9: компиляция и запуск проекта

В рамках подготовки к официальному релизу Java 9 учимся пользоваться командами java, javac и jar для управления своим кодом.

Команды java и javac редко используются Java-программистами. Такие инструменты, как Maven и Gradle делают их почти не нужными. Однако Maven и Gradle до сих пор не предоставляют полную поддержку для Java 9, поэтому, если вы хотите начать использовать её уже сейчас или просто хотите узнать некоторые полезные тонкости до официального релиза, стоит научиться вызывать java , javac и jar для управления своим кодом.

Статья призвана показать примеры использования этих команд, а также то, как эти команды изменились по сравнению с прошлыми версиями Java. Дополнительно будут рассмотрены новые инструменты: jdeps и jlink . Предполагается, что вы хоть немного знакомы с предыдущими версиями команд java / javac / jar и с модульной системой Java 9.

Установка Java 9

Сперва необходимо установить Java 9. Вы можете скачать её с сайта Oracle, но рекомендуется использовать SdkMAN!, так как в будущем он позволит вам с легкостью переключаться между разными версиями Java.

Можно установить SdkMAN! с помощью этой команды:

curl -s "https://get.sdkman.io" | bash 

Посмотрите, какая сборка является последней:

sdk list java 

Затем установите Java 9:

sdk install java 9ea163 

Теперь, если у вас установлены другие версии Java, вы можете переключаться между ними с помощью команды:

sdk use java

Компиляция и запуск «по-старому»

Для начала напишем какой-нибудь код, чтобы проверить наши инструменты. Если не использовать модульный дескриптор, то все выглядит так же, как и раньше.

Возьмем этот простой Java-класс:

package app; public class Main < public static void main( String[] args ) < System.out.println( "Hello Java 9" ); >> 

Теперь, так как мы не использовали никаких особенностей Java 9, мы можем скомпилировать всё как обычно:

javac -d out src/app/Main.java 

Команда создаст файл класса out/app/Main.class . Запустить его можно так же, как и в прошлых версиях:

java -cp out app.Main 

Программа выведет Hello Java 9 .

Теперь создадим библиотеку Greeting также без особенностей Java 9, чтобы посмотреть, как это работает.

Создадим файл greeting/ser/lib/Greeting.java со следующим кодом:

package lib; public class Greeting < public String hello() < return "Hi there!"; >> 

Изменим класс Main для использования нашей библиотеки:

package app; import lib.Greeting; public class Main < public static void main( String[] args ) < System.out.println( new Greeting().hello() ); >> 

Скомпилируем эту библиотеку:

javac -d greeting/out greeting/src/lib/Greeting.java 

Чтобы показать, как работают оригинальные Java-библиотеки, мы превратим эту библиотеку в jar-файл без дескрипторов модулей Java 9:

mkdir libs jar cf libs/lib.jar -C greeting/out . 

Команда создаст файл libs/lib.jar , содержащий класс lib.Greeting .

Просмотреть информацию о jar-файле можно с помощью опции tf :

jar tf libs/lib.jar 

Команда должна вывести:

META-INF/ META-INF/MANIFEST.MF lib/ lib/Greeting.class 

Теперь для компиляция app.Main нам необходимо указать компилятору, где найти класс lib.Greeting .

Используем для этого cp (classpath):

javac -d out -cp libs/lib.jar src/app/Main.java 

И то же самое для запуска программы:

java -cp out:libs/lib.jar app.Main 

Мы можем упаковать приложение в jar-файл:

jar cf libs/app.jar -C out . 

И затем запустить его:

java -cp 'libs/*' app.Main 

Вот так выглядит структура нашего проекта на данный момент:

. ├── greeting │ ├── out │ │ └── lib │ │ └── Greeting.class │ └── src │ └── lib │ └── Greeting.java ├── libs │ ├── app.jar │ └── lib.jar ├── out │ └── app │ └── Main.class └── src └── app └── Main.java 

Модуляризация проекта

Пока что ничего нового, но давайте начнем модуляризацию нашего проекта. Для этого создадим модульный дескриптор (всегда называется module-info.java и размещается в корневой директории src/ ):

module com.app

Команда для компиляции модуля в Java 9 отличается от того, что мы видели раньше. Использование старой команды с добавлением модуля к списку файлов приводит к ошибке:

javac -d out -cp 'libs/lib.jar' src/module-info.java src/app/Main.java # не работает 
src/app/Main.java:3: error: package lib does not exist import lib.Greeting; ^ src/app/Main.java:7: error: cannot find symbol System.out.println( new Greeting().hello() ); ^ symbol: class Greeting location: class Main 2 errors 

Чтобы понять, почему наш код не компилируется, необходимо понять, что такое безымянные модули.

Любой класс, который загружается не из именованного модуля, автоматически выполняет часть безымянного модуля. В примере выше перед созданием модульного дескриптора наш код не был частью какого-либо модуля, следовательно, он был ассоциирован с безымянным модулем. Безымянный модуль — это механизм совместимости. Проще говоря, это позволяет разработчику использовать в приложениях Java 9 код, который не был модуляризирован. По этой причине код, относящийся к безымянному модулю, имеет правила сродни Java 8 и ранее: он может видеть все пакеты, экспортируемые из других модулей, и все пакеты безымянного модуля.

Когда модульный дескриптор добавляется к модулю, его код больше не является частью безымянного модуля и не может видеть код других модулей, пока не импортирует их. В случае выше модуль com.app не требует никаких модулей, поэтому модуль библиотеки Greeting для него не виден. Он может видеть только пакеты модуля java.base .

Модули в Java 9, за исключением неуловимого безымянного модуля описанного выше, должны объявлять, какие другие модули им необходимы. В случае с модулем com.app единственным требованием является библиотека Greeting. Но, как вы могли догадаться, эта библиотека (как и другие библиотеки, не поддерживающие Java 9) не является модулем Java 9. Как же нам включить её в проект?

В таком случае вам нужно знать имя jar-файла. Если у вас есть зависимость от библиотеки, которая не была конвертирована в модуль Java 9, вам надо знать, какой jar-файл вызывается для этой библиотеки, потому что Java 9 переведёт имя файла в валидный модуль.

Это называется автоматический модуль.

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

Чтобы узнать имя автоматического модуля, компилятор конвертирует неальфанумерические, поэтому что-то вроде slf4j-api-1.7.25.jar превратится в имя модуля sl4j.api .

У нас есть библиотека с именем lib.jar . Давайте переименуем jar-файл в greetings-1.0.jar :

mv libs/lib.jar libs/greetings-1.0.jar 

Это более стандартное имя файла, и теперь мы можем сказать Java включить автоматический модуль с приемлемым именем greetings . И можем вызывать его из com.app модуля:

module com.app

Модули не добавлены в classpath . Как и обычные jar-файлы, они используют новый флаг —module-path (-p) . Теперь мы можем скомпилировать наши модули следующей командой:

javac -d out -p 'libs/greetings-1.0.jar' src/module-info.java src/app/Main.java 

Чтобы запустить app.Main командой java мы можем использовать новый флаг —module (-m) , который принимает либо имя модуля, либо шаблон module-name/main-class :

java -p 'libs/greetings-1.0.jar:out' -m com.app/app.Main 

И мы получим вывод Hi, there .

Для создания и использования app.jar в качестве исполняемого jar-файла выполните следующие команды:

jar --create -f libs/app.jar -e app.Main -C out . java -p libs -m com.app 

Следующим шагом будет модуляризация библиотек, которые используются нашим приложением.

Модуляризация библиотек

Для модуляризации библиотеки нельзя сделать ничего лучше, чем использовать jdeps — инструмент для статистического анализа, который является частью Java SE.

Например, команда, которая позволяет увидеть зависимости нашей небольшой библиотеки, выглядит так:

jdeps -s libs/greetings-1.0.jar 

А вот результат её выполнения:

greetings-1.0.jar -> java.base 

Как и ожидалось, библиотека зависит только от java.base модуля.

Мы знаем, что com.app зависит от модуля greetings . Давайте попробуем использовать jdeps , чтобы он подтвердил нам это. Для этого нужно удалить файлы module-info.calss и app.jar и затем запустить jdeps :

zip -d libs/app.jar module-info.class 
deleting: module-info.class 
jdeps -s -cp libs/greetings-1.0.jar libs/app.jar 
app.jar -> libs/greetings-1.0.jar app.jar -> java.base 

Хорошо, но можно лучше. Мы можем попросить jdeps автоматически сгенерировать модульный дескриптор для набора jar-файлов. Просто укажите ему, куда сохранять сгенерированные файлы (например, в папку generated-mods ), и где находятся jar-файлы:

jdeps --generate-module-info generated-mods libs/greetings-1.0.jar libs/app.jar 

Команда создаст два файла: generated-mods/app/module-info.java и generated-mods/greetings/module-info.java со следующим содержимым:

module app
module greetings

Теперь мы можем добавить сгенерированный дескриптор для нашей библиотеки в её исходный код, переупаковать её, и у нас получится полностью модульное приложение:

javac -d greeting/out $(find greeting/src -name *.java) jar cf libs/greetings-1.0.jar -C greeting/out . 

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

├── greeting │ └── src │ ├── lib │ │ └── Greeting.java │ └── module-info.java ├── libs │ ├── app.jar │ └── greetings-1.0.jar └── src ├── app │ └── Main.java └── module-info.java 

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

Наиболее простым способом получить список всех jar-файлов, которые используются в библиотеке, является использование скрипта Gradle. Он выведет пути локальных jar-файлов для всех зависимостей библиотек, которые вы добавите в секцию зависимостей, и скачает их, если необходимо:

apply plugin: 'java' repositories < mavenLocal() mavenCentral() >dependencies < compile 'io.javaslang:javaslang:2.0.6' >task listDeps

Если у вас нет Gradle, вы можете использовать SdkMAN! для его установки:

sdk install gradle 

Для получения списка зависимостей используйте следующую команду:

gradle listDeps 

Полученную информацию передайте jdeps для анализа и автоматической генерации метаданных.

Это файл, который jdeps выводит для javaslang.match :

module javaslang.match

Создание собственного образа среды выполнения

С помощью jlink Java-приложения могут распространяться как образы, которые не требуют установки JVM.

Следующая команда создает образ для нашего com.app модуля без оптимизации, сжатия или отладочной информации:

jlink -p $JAVA_HOME/jmods:libs --add-modules com.app \ --launcher start-app=com.app \ --output dist 

Меньший размер может быть достигнут использованием некоторых флагов jlink , таких как —strip-debug и —compress :

jlink -p $JAVA_HOME/jmods:libs --add-modules com.app \ --launcher start-app=com.app \ --strip-debug --compress=2 \ --output small-dist 

Размер пакетов можно посмотреть с помощью команды du -sh :

du -sh small-dist dist 
21M small-dist 35M dist 

Для запуска приложения используйте предоставляемый лаунчер в директории bin :

dist/bin/start-app 

Вы должны увидеть сообщение Hi there .

На этом всё. Разбор нововведений в Java 9 предлагаем прочитать в нашей статье.

Кофе-брейк #148. Как превратить любую Java-программу в автономный EXE-файл

Java-университет

Кофе-брейк #148. Как превратить любую Java-программу в автономный EXE-файл - 1

Источник: Mccue.dev Сегодня вы узнаете, как создать из Java-программы исполняемый EXE-файл для запуска в операционной системе Windows. Двойной щелчок для запуска — один из самых простых способов открыть программу. Если у человека, которому вы хотите показать свое приложение, уже установлена ​​правильная версия Java, для запуска он может дважды щелкнуть файл jar. Если же у него не установлена ​​Java, то есть способы создать исполняемый установщик, такой как jpackage. После этого для запуска кода нужно лишь нажать на этот установщик. Также можно использовать Native Image, чтобы превратить код в исполняемый файл, который не требует какой-либо дополнительной установки. В этой статье мы сосредоточимся на довольно простом подходе, который работает для любого приложения, независимо от того, какие зависимости вы включаете или какие функции JVM используете. Код, о котором сегодня пойдет речь, можно найти в репозитории GitHub, а исполняемые файлы с программой выложены здесь.

Используемый стек

Java 9+

java —version jlink —version

Maven

mvn —version

NodeJS

npx —version

Шаг 1. Скомпилируйте и упакуйте свой код в jar

Эта базовая программа создаст простое окно с текстом, который вы можете менять, нажимая на одну из кнопок в интерфейсе.

 package example; import org.apache.commons.text.WordUtils; import javax.swing.*; import java.awt.*; public class Main < public static void main(String[] args) < var label = new JLabel("Hello, World!"); label.setFont(new Font("Serif", Font.PLAIN, 72)); var uppercaseButton = new JButton("Uppercase"); uppercaseButton.addActionListener(e ->label.setText(WordUtils.capitalize(label.getText())) ); var lowercaseButton = new JButton("lowercase"); lowercaseButton.addActionListener(e -> label.setText(WordUtils.uncapitalize(label.getText())) ); var panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(label); panel.add(uppercaseButton); panel.add(lowercaseButton); var frame = new JFrame("Basic Program"); frame.add(panel); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); > > 

Сейчас наша цель состоит в том, чтобы упаковать код вместе с его зависимостями в jar. JAR-файлы — это обычные ZIP-архивы с небольшой дополнительной структурой. Для проекта Maven конфигурация будет выглядеть следующим образом.

Здесь плагин “shade” будет обрабатывать включение кода из всех ваших зависимостей в jar. В данном случае единственной внешней зависимостью является org.apache.commons/commons-text.

mvn clean package
Затем мы переместим этот jar-файл в новый каталог target/, где он будет отделен от других файлов.
mkdir build mv target/javaexe-1.0.jar build

Шаг 2. Создайте среду выполнения Java (Java Runtime Environment, JRE)

Чтобы запустить уже созданный нами jar-файл, нужно связать его со средой выполнения Java. Для этого мы будем использовать jlink. Поскольку в экосистеме Java не используются модули, то вы, скорее всего, не слышали о них и не использовали jlink. Короче говоря, jlink может создавать “настраиваемые исполняемые образы”. Например, вы делаете веб-сервер. Вам не нужны AWT или Swing, поэтому включать их в код будет лишним. С помощью jlink вы можете создать JRE, которая вообще не включает модуль java.desktop. Эта система работает лучше всего, если ваше приложение и все его зависимости включают скомпилированные файлы module-info.java, которые дают jlink точную информацию, какие модули вы хотите включить. Вы также можете вручную определить список необходимых модулей, используя jdeps. И даже без модульного проекта мы можем эффективно клонировать нашу инсталляцию Java в каталог с помощью jlink.

jlink —add-modules ALL-MODULE-PATH —output build/runtime

Включение каждого модуля по отдельности дает уверенность в том, что такие библиотеки как org.apache.commons/commons-text будут работать именно так, как задумано. Нужно лишь выяснить, какие модули нам требуются.

Шаг 3. Объедините Jar и JRE в исполняемый файл

  1. Заархивируйте каталог, содержащий JRE и jar вашего приложения.
  2. Прикрепите сценарий-заглушку (stub script) к верхней части этого zip-файла, который извлечет данные во временный каталог и запустит код.

npx caxa \ —input build \ —output application \ —no-include-node \ — «<>/runtime/bin/java» «-jar» «<>/javaexe-1.0.jar»

Это создаст исполняемый файл с именем “application”. Если вы создаете его для Windows, то нужно указать “application.exe”. Когда исполняемый файл запускается, <> будет заменен на временный каталог, в котором был развернут zip-файл. Учтите, что при создании исполняемых файлов используются также и такие механизмы, как подпись кода и автоматические обновления. Однако эти вещи требуют более глубокого изучения, которое трудно вместить в одну публикацию.

Developing.ru

Всем привет .
Вот такая проблема:
В JBuilder запускается проект с параметром -Xmx110m (иначе вылетает OutOfMemoryError)- работает без ошибок
Пакую все в jar-файл, например, phone.jar. Запуск через обычный double click не идет.
Если ручками в консоли:

java -Xmx110m -jar phone.jar

Вопрос:
Как запустить jar с этим параметром (-Xmx110m) через double click ?

Иначе теряется весь смысл «Executable Jar File».
Простого юзера не заставишь что-то там набирать в «какой-то там консоли». Ну вы меня понимаете.

Как вариант — глобально задать выделение памяти 110m, но как?
Какой set . .

Спасибо за внимание.

evgeny_d Сообщения: 62 Зарегистрирован: 23 мар 2004, 08:31

А что, исполняемые jar-файлы только для этого и нудны??
А я думал, что для того, чтобы не париться и не искать конкретный класс, который надо запустить и т.п.

ИМХО, для того, чтобы пользователь не парился и мог запустить java-программу надо писать файлики phone.sh или phone.bat — по ситуации.

Oleg_S Сообщения: 27 Зарегистрирован: 22 апр 2004, 01:42 Откуда: Chisinau
А что, исполняемые jar-файлы только для этого и нудны??

Конечно же нет.
А из батника получаешь на долю секунды «моргание» консоли. Но так разумеется можно решить задачку.
Если обычную прогу легко запускаешь из jar, я надеялся, что и с параметром это тоже возможно.

evgeny_d Сообщения: 62 Зарегистрирован: 23 мар 2004, 08:31

sh скрипт — это всего лишь средство. наиболее простое ИМХО.

Можно ведь и на C++, например то же самое написать, тогда не будет «моргания». Правда сам не пробовал, но теоретически — должно работать.

Например, запостить такой вопросец в «Решите мне задачку» или на sourceforge.net посмотреть — наверняка кто-нибудь подобный «лаунчер» уже писал

DeeJayC Сообщения: 492 Зарегистрирован: 17 фев 2004, 11:26 Откуда: Ленинград (который Город на Неве) Контактная информация:

Есть такой «лаунчер»
Вместе с JDK/JRE идёт. javaw.exe называется.

«Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!» (c)

viel spass, DeeJayC

evgeny_d Сообщения: 62 Зарегистрирован: 23 мар 2004, 08:31

Однако это не решает упомянутой проблемы.

А «лаунчером» я назвал не java.exe или javaw.exe, а программу, которая как раз его запустит %)

Можно это сделать легко — через sh и bat, или посложнее — исполнив программу из другой .exe программы-лаунчера.

К слову сказать, быть может проблемка разрешается при помощи соответствующего набора параметров в META-INF/manifest.mf в исполняемом jar-файле

Oleg_S Сообщения: 27 Зарегистрирован: 22 апр 2004, 01:42 Откуда: Chisinau
Однако это не решает упомянутой проблемы.
при помощи соответствующего набора параметров в META-INF/manifest.mf в исполняемом jar-файле

Какие нужны параметры ? Кроме Main-Class: в моем случае там ничего нет

И повторюсь по поводу глобального выделения памяти для java программы — кто-то в курсе как это сделать? Тогда все должно решиться

DeeJayC Сообщения: 492 Зарегистрирован: 17 фев 2004, 11:26 Откуда: Ленинград (который Город на Неве) Контактная информация:

есть роскошный способ. Ассоциировать в win32 клик на jar с открытием javaw с параметрами

«Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!» (c)

viel spass, DeeJayC

evgeny_d Сообщения: 62 Зарегистрирован: 23 мар 2004, 08:31
DeeJayC писал(а): роскошный способ
Bas Сообщения: 21 Зарегистрирован: 10 мар 2004, 21:46
Oleg_S писал(а): Вопрос:
Как запустить jar с этим параметром (-Xmx110m) через double click ?

Я бы посоветовал постараться пересмотреть саму программу и переписать ее так, что бы дополнительная память не требовалась бы. Все параметры -Х — это нестандартные параметры JVM, и нет никакой гарантии, что в следующих версиях Java они будут поддерживаться. Скорее всего, именно из-за этого и нет другого способа (а может просто я не знаю) установить эти параметры, без использования командной строки.

На самом деле, есть всевозможные лаунчеры (например InstallAnywhere), которые умеют создавать для проекта .exe файлы, управляемые с помощью конфигурационных файлов, где можно установить все нужные параметры для JVM — будет работать.

  • Системное и прикладное программирование
  • ↳ Win API, Shell..
  • ↳ C и C++
  • ↳ Delphi и Pascal
  • ↳ Программирование на Pascal и Delphi (Object Pascal)
  • ↳ Все вопросы ООП
  • ↳ Компоненты в Delphi
  • ↳ Delphi и WinAPI, ActiveX и OLE , COM и DCOM, и т.д
  • ↳ Java
  • ↳ MS Office и VB(A).
  • ↳ Ассемблер
  • WEB программирование
  • ↳ JScript, VBScript, DHTML.
  • ↳ Perl, PHP, ASP .
  • Некатегоризированное
  • ↳ Вопрошайка
  • ↳ SQL
  • ↳ Алгоритмы
  • ↳ Дизайн и графика
  • Администрирование
  • ↳ Apache, IIS.
  • ↳ Операционные системы
  • Работа
  • ↳ Вакансии и заказы для программистов
  • ↳ Поиск работы и заказов.
  • ↳ Решите мне задачку
  • ↳ задачи на Паскале и Delphi
  • ↳ задачи на C и C++
  • ↳ задачи на Basic и Visual Basic (VB)
  • Прочее
  • ↳ Жалобная книга
  • ↳ Флейм.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *