Как я могу выполнить .jar?

Доброе утро, у меня проблема, когда я пытаюсь выполнить свой .jar. Моя программа прочитала какой-то файл с удаленного сервера с помощью JSch.

C:\Documents and Settings\julie\Bureau>java -jar myFile.jar 

Exception in thread "main" java.lang.NoClassDefFoundError: com/jcraft/jsch/SftpE xception         
at java.lang.Class.getDeclaredMethods0(Native Method)         
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)         
at java.lang.Class.getMethod0(Unknown Source)         
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)     
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: com.jcraft.jsch.SftpException    
at java.net.URLClassLoader$1.run(Unknown Source)     
at java.net.URLClassLoader$1.run(Unknown Source)    
at java.security.AccessController.doPrivileged(Native Method)     
at java.net.URLClassLoader.findClass(Unknown Source)   
at java.lang.ClassLoader.loadClass(Unknown Source)      
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)     
at java.lang.ClassLoader.loadClass(Unknown Source)         
... 6 more

person user3386486    schedule 06.03.2014    source источник


Ответы (1)


В этом пакете отсутствуют классы: com.jcraft.jsch.

Если этот пакет исходит из сторонней библиотеки, убедитесь, что jar содержит этот пакет внутри папки lib на том же уровне, что и ваш исполняемый jar.

[Изменить]

Во-первых: чтобы добавить третью часть jar в eclipse:

  1. Щелкните правой кнопкой мыши на вашем проекте
  2. Выберите «Свойства» -> «Путь сборки Java» -> нажмите «Библиотеки».
  3. Выберите Добавить внешние JAR-файлы.
  4. Перейдите к своим банкам и нажмите OK.

Второе: для создания исполняемого файла JAR:

  1. Щелкните правой кнопкой мыши на вашем проекте
  2. Выберите «Экспорт» -> «Java» -> «Запускаемый файл JAR».

Это должно работать нормально.

person Salah    schedule 06.03.2014
comment
Я добавил папку lib, содержащую мой .jar на том же уровне, что и src, я снова экспортировал .jar. Когда я извлекаю .jar, я вижу папку lib внутри, но у меня та же проблема, подскажите? Помоги мне - person user3386486; 06.03.2014
comment
Вам не нужно ничего добавлять, просто убедитесь, что при экспорте jar-файла он также экспортирует jar-файлы сторонних библиотек. - person Salah; 06.03.2014
comment
Пожалуйста, Салах, можете ли вы дать мне более подробную информацию. Информация (пользователь и пароль) моего сервера находится внутри файла .ini, и я использую jsch-0.1.42.jar и jcsv-1.4.0.jar. Мой файл .jar не решен - person user3386486; 06.03.2014
comment
Вы уверены, что добавили эти банки в свой проект. - person Salah; 07.03.2014
comment
Я расскажу вам шаги, которые ваш проект должен работать нормально. см. мой обновленный ответ. - person Salah; 08.03.2014
comment
теперь у меня проблема с безопасностью. В моем проекте есть файл .ini, который содержит информацию (пароль и пользователь) о подключении к моему серверу. Когда я извлекаю .jar, в файле отображается пароль и пользовательское соединение. Я не хочу, чтобы человек, который будет запускать .jar, видел эту информацию. Как я могу это решить? - person user3386486; 10.03.2014
comment
Это может помочь вам Как получить доступ к файлу в файле jar - person Salah; 10.03.2014
comment
И, пожалуйста, не забудьте принять его как ответ, если он решил вашу проблему. - person Salah; 10.03.2014
comment
Пожалуйста, я хочу отказать в доступе к файлу jar пользователю jar. - person user3386486; 10.03.2014
comment
потому что если у пользователя есть доступ, он может иметь пароль сервера. - person user3386486; 10.03.2014
comment
мой файл .ini находится в моем проекте/src - person user3386486; 10.03.2014
comment
Затем вам нужно проверить текущего пользователя, вошедшего в систему, если он один из тех, у кого есть доступ, затем выполните этот код, который обращается к файлу, иначе не выполняйте его. - person Salah; 10.03.2014
comment
Спасибо за ответ на первый вопрос. - person user3386486; 13.03.2014
comment
Пожалуйста, и, пожалуйста, не забудьте принять это как ответ, если он вам помог. - person Salah; 14.03.2014