LINUX.ORG.RU

Invalid or corrupt jarfile

 ,


1

2

В IntelliJ IDEA-14 создал проект, в параметрах версия Java 1.8, на моем компе запускается и из IDEA, и jar-артифакт. Перенес jar на другой комп, поставил там Java 1.8.66 распоследнюю - пишет такую ошибку при запуске. Про manifesrt ничего не знаю пока, буду читать еще.

java -cp launcher/target/usergrid-launcher-1.0-SNAPSHOT.jar co.pseudononymous.Server
по совету с http://stackoverflow.com/questions/7...rrupt-jar-file не помогает.

Как вообще надо создавать нормальные стандалон-приложения на java?



Последнее исправление: Ivana (всего исправлений: 1)

Ответ на: комментарий от Legioner

Ладно, попробую перенести еще раз (как доберусь до компа с исходниками), хотя сомнительно что проблема в этом.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Jar-файл это просто ZIP-архив. Попробуй его разархивировать любым архиватором. Если получится — можно дальше думать. Если не получится — значит файл повреждён.

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

Фигасе, действительно обычный архив! :) Открывается, там оказывается запихнуто все что надо и не надо из сорцов проекта... Файл вроде не поврежден, как я и подозревал.

Ivana
() автор топика
Ответ на: комментарий от Legioner

Виндовая (знаю где я, не бейте :)) недоконсоль закрывается и не дает прочитать что там написано. Щас буду пробовать победить это и покажу.

Ivana
() автор топика
Ответ на: комментарий от Ivana

«jar» не является внутренней или внешней командой, исполняемой программой или пакетным файлом...

Ivana
() автор топика
Ответ на: комментарий от BattleCoder

Хороший вопрос. Могу установить конечно, но зачем мне он на машине, где я хочу только запускать готовые приложения? Или Java-программы не будут работать на компах где есть только jre?

Ivana
() автор топика
Ответ на: комментарий от Ivana

Будут, естественно. Но если вам нужно разрабатывать, вам нужен jdk. Почему вы удивляетесь тому, что у вас нет команды jar, если не установлен jdk?

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

Понял, ради этой команды сейчас качаю и установлю jdk последний. Хотя на этом компе я хотел только запустить программку, которую написал на другом, где она запускается (и где конечно и jre и jdk)...

Ivana
() автор топика
Ответ на: комментарий от Ivana

Поставил jdk, написала саксессфулли инсталлед, но jar и javac команды консоль до сих пор не знает. Наверное надо патхи приписывать руками. Не знаю в чем проблема. Как в 17 веке прямо все - консоль, ручное подключение...

Ivana
() автор топика
Ответ на: комментарий от Ivana

В каталоге установленных программ теперь 2 папки - jre1.8.0_66 и jdk1.8.0_66, в которой своя подпапка jre. java -version в консоли пишет версию jre, javac и jar не работают. Перегружался. Монитор протирал. Мыслей нет.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Напиши в консоли "C:\Program Files\jdk1.8.0_66\bin\jar.exe" tf somewhere\usergrid-launcher-1.0-SNAPSHOT.jar > C:\Users\Ivana\Desktop\result.txt, результат будет сохранён на рабочем столе в файле result.txt (пути прописать как у тебя на машине). Или залей куда-нибудь этот jar-файл.

PS раз у тебя в PATH-е было непонятно что, попробуй так же указать полный путь и запустить свою программу: "C:\Program Files\jdk1.8.0_66\bin\java.exe" -cp launcher/target/usergrid-launcher-1.0-SNAPSHOT.jar co.pseudononymous.Server

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 3)
Ответ на: комментарий от Legioner

Путем тыка

C:\Users\Anton>"C:\Program Files (x86)\Java\jdk1.8.0_66\bin\jar.exe" tf "C:\User
s\Anton\Desktop\Liscript\Java_1.jar"
выдает список файлов, запакованных в архив. Список большой, не влезает в консоль - много хлама.

Ivana
() автор топика
Ответ на: комментарий от Ivana
C:\Users\Anton>"C:\Program Files (x86)\Java\jdk1.8.0_66\bin\java.exe" -cp "C:\Us
ers\Anton\Desktop\Liscript\Java_1.jar"

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

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available
    -client       to select the "client" VM
    -server       to select the "server" VM
                  The default VM is client.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A ; separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose:[class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  Warning: this feature is deprecated and will be removed
                  in a future release.
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -no-jre-restrict-search
                  Warning: this feature is deprecated and will be removed
                  in a future release.
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument

    -splash:<imagepath>
                  show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for m
ore details.

Ivana
() автор топика
Ответ на: комментарий от Ivana
C:\Users\Anton>"C:\Program Files (x86)\Java\jdk1.8.0_66\bin\java.exe" -cp "C:\Us
ers\Anton\Desktop\Liscript\Java_1.jar" co.pseudononymous.Server
Error: Could not find or load main class co.pseudononymous.Server[\code]
Ivana
() автор топика
Ответ на: комментарий от Ivana
C:\Users\Anton>"C:\Program Files (x86)\Java\jdk1.8.0_66\bin\java.exe" -cp "C:\Us
ers\Anton\Desktop\Liscript\Java_1.jar" com.company.Main
[\code] - заработала! Не прошло и нескольких часов тыкания :) Спасибо!

ЗЫ но все равно это не отвечает на вопрос, как сделать нормально запускающееся приложение :)
Ivana
() автор топика
Ответ на: комментарий от Ivana

Сократил до

java -cp Java_1.jar com.company.Main
- оказывается надо было правильно путь с моему Мэйн-классу указать :) Не знаю какую java она теперь берет - из jre или из jdk, но неважно. Все равно надо как-то научиться делать запуск по мышке. Подозреваю, что с манифестом придется тыкаться, двоеточия пытаться убирать вручную и т.п.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Запуск по мышке это то же, что и команда java -jar Java_1.jar. Чтобы она работала, нужно прописать main class в файле META-INF/MANIFEST.MF. Если экспортируешь из идеи, там можно указать main class, она сама пропишет что надо и всё будет работать.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Будете смеяться, но вот содержимое моего манифеста:

Manifest-Version: 1.0
Main-Class: com.company.Main
на вид все должно работать. Но я нашел в инете тред, где кто-то писал что двоеточия надо убирать - с ними не работает. Если это так, то это глюки манифеста или шаблона проекта.

Ivana
() автор топика
Ответ на: комментарий от Legioner
java -jar Java_1.jar

- инвалид о корруптед джар файл. Можем вместе мониторы протереть :) Я билдил артефакт из ИДЕИ, сам ничего не архивировал. Вот здесь http://stackoverflow.com/questions/7559072/corrupt-jar-file есть гипотезы, но не знаю мой ли это случай.

Ivana
() автор топика
Ответ на: комментарий от Legioner

Legioner, теперь попробую когда буду на том компе. Но по памяти - пробовал и так, не работает с -jar ни в каком виде. Но мне все равно придется батник для запуска делать - чтобы стека запрашивать побольше (не знаю можно ли внутри кода его запросить и в сеттингах запоминать), так что не смертельно.

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

Ivana
() автор топика
Ответ на: комментарий от Ivana

В манифесте после последней строки должен быть перевод курсора на новую пустую строку. В таком виде сохранить.

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

Он там есть, я просто не указал его приводя текст манифеста. Там 3 строки, последняя пустая.

Ivana
() автор топика
3 января 2017 г.
Ответ на: комментарий от bbk123

спасибо,помог ваш комент мне помогло вот это java -cp xxx.jar Mainclass

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