LINUX.ORG.RU

Простенькая программка на Java :-/


0

1

Понадобилось преобразовать кучу файлов из wmf в svg. Попробовал разные варианты, в итоге отлично работает либа Apache Batik.

Написал тонюсенькую программу-обёртку (38 строк), которая парсит аргументы командной строки и дёргает процедурину transcode. Порадовался как приятно писать на Java.

Не сразу удалось сию прогу откомпилировать. После вкуривания документации про classpath собрать получилось.

И вот самый прикол. Чтобы эту прогу *запустить*, пришлось *вручную* прописывать в classpath имена порядка 20 jar файлов, притом вначале по названиям классов эти имена надо было угадать! Это же ужас!! Стал читать интернет на тему как собрать всё в 1 файл.

Есть варианты с использованием ant (jarjar например), но они по факту не работают (http://code.google.com/p/jarjar/issues/detail?id=33 и т.п.). Да и напрягает немного, что build.xml получается *длиннее и сложнее* собственно полезной проги. Предлагают также использовать maven. Но прочтя http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html, я решил спросить у ЛОРа, так ли всё плохо на самом деле??

Да, я понимаю, что зато Java такая из себя крутая и кроссплатформенная. Да, понятно, что теоретически я могу загружать классы динамически и т.п. Но всё-таки, неужели нет людского способа просто выдать список тех файлов из /usr/share/java/*.jar, от которых мой wmf2svg.class зависит статически?? (В идеале хотелось бы сразу получить 1 жирный запускаемый файл). Знатоки, помогите!!

Возьми питон и никогда больше не трогай жабу.

Artificial_Thought ★★★★
()

Но всё-таки, неужели нет людского способа просто выдать список тех файлов из /usr/share/java/*.jar, от которых мой wmf2svg.class зависит статически??

Есть. Используйте православный Си и пообещайте никогда больше не трогать жаву.

AlexCones ★★★
()
Ответ на: комментарий от aparamon

С помощью комбинации Inkscape + GIMP можно переконвертить ваши файлы в svg. Обе программы с открытыми исходниками и расшаренными либами. Что вам мешает взять их либы и/или скопировать код. Не думайте, что решение вашей проблемы возможно только на жаве.

AlexCones ★★★
()

используй ide типа intellij idea или eclipse, где удобно подключение нужных либ и не нужно возиться с ant'ом

xapienz
()
Ответ на: комментарий от AlexCones

Мешает то, что для моих файлов Inkscape не работает. Я попробовал несколько либ, и Batik работает прекрасно, а из других только 1 библиотека удовлетворительно.

Так по поводу собственно зависимостей в жабе есть комментарии?

aparamon
() автор топика

я решил спросить у ЛОРа, так ли всё плохо на самом деле??

Да.

По сути, вам лучше maven (или аналоги напр. Gradle) - достаточно указать что вам нужет batik и все остальные зависимости он притянет автоматически, небольшим усилием можно скинуть их все в одну директорию и сваять sh скрипт для запуска (или вкомпилить пути в manifest).

belous_k_a
()

Есть еще обходной вариант перепаковать нужные jar-ы в один. Jar - это переименованный zip => unzip + zip и получаешь вместо десятка файлов один.

YesSSS ★★★
()

Эклипс при экспорте сам предлагает все запаковать в один jar, например. Правда, не всегда работает. Netbeans тоже может.

note173 ★★★★★
()

Я херею. Ты почему такой странный. Какой тебе нахер classpath. Возьми, да прочти документацию. Все jar'ники названы адекватными именами. Копируешь нужные для твоего хелловорда либы в папку lib, кладешь ее рядом со своим убер приложением, пишешь файл manifest, где указываешь в разделе Class-Path :, все необходимые библиотеки из папки lib. Что сложного то?

anonymous
()

man java

As a special convenience, a class path element containing a basename of * is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR (a java program cannot tell the difference between the two invocations).

baverman ★★★
()
Ответ на: комментарий от baverman

Да, я херею, сколько всё-таки безруких мартышек, предлагающих IDE для такой задачи.

baverman ★★★
()
Ответ на: комментарий от note173

Какой нахер эклипс? У тс'а 38 строк. Нет, не так. ТРИДЦАТЬ ВОСЕМЬ СТРОК КОДА!!!111. На кой ляд использовать какую то IDE. Все это дело прекрасно компилируется и собирается в jar архив с необходимыми зависимостями руками, слышишь, РУКАМИ! Надо всего лишь почитать доку по javac и jar. Это займет максимум минут 15-30. А вы предлагаете ставить IDE и не задумываться что происходит внутри. IDE нужна когда ты пишешь большой проект, а не программку из 38 строк.

anonymous
()
Ответ на: комментарий от Adjkru

Муахаха. Ды сделал мне смешно.

anonymous
()

1. Пишешь в нетбинс 2. Собираешь проект 3 ... 4. PROFIT!

Zhbert ★★★★★
()
Ответ на: комментарий от anonymous

Ну ка сбегай на офф сайт, да посмотри в разделе success stories как он не нужен.

Sheldon Lee Cooper детектед.

le_legioner ★★
()
Ответ на: комментарий от anonymous

IDE в яве стоит использовать всегда, потому что сборка вручную не дает никаких преимуществ, — ни скорости, ни гибкости, ни удобства.

note173 ★★★★★
()

просто надо запихать все нужные jar в каталог %java%\jre\lib\ext если ты рут на машине, и всех делов
А classpath это для тонкого тюнинга, или для распространения твоего джара.

Karapuz ★★★★★
()

тебе проще всего их в manifest твоего jar'а вписать

maxcom ★★★★★
()
Ответ на: комментарий от note173

IDE в яве стоит использовать всегда, потому что сборка вручную [...]

Работа не в IDE и сборка вручную не связаны друг с другом, когда есть ant и maven.

dave ★★★★★
()

Простенькая программка на Java

ЭТО НЕВОЗМОЖНО!!!111

havelite
()

imagemagic + posix shell

Jetty ★★★★★
()

Потратил ещё вечер и сделал на Maven. Конфиг занял 55 строк, при сборке необходим доступ в сеть, но зато программка собирается одной командой и потом работает натурально везде. Правда jar-файл на 9 мег ;-)

Ну в общем работать можно. Хотя принцип «простое — просто, сложное — возможно» жёстко изнасилован.

aparamon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.