Проверьте работающий JAR - PullRequest
       17

Проверьте работающий JAR

1 голос
/ 21 августа 2011

У меня есть JAR, который я хочу раздать.Я подписал этот файл jar и хотел бы, чтобы JAR проверил правильность хэшей (найденных в манифесте).

Я нашел код на efreedom, который проверяет хэши JarFile (не могуопубликуйте ссылку, но код приведен ниже в функции verify_Jar_Integrity).Этот код, кажется, работает.Я написал следующее (я знаю, что он не зависит от платформы, но я просто пытаюсь заставить его работать прямо сейчас), который находит путь к текущему JAR и пытается проверить его.Это приходит с FileNotFoundException: C: \ Users ... \ dist (Доступ запрещен).Я думаю, что это исключение связано с тем, что java пытается «открыть» каталог, а вы можете открывать только файлы, но я не уверен, как это исправить.

public JarFile get_Path() {
   String jarpath = this.getClass().getResource("/" + this.getClass().getName().replace('.', '/') + ".class").toString();
   int first = jarpath.indexOf("C:");
   int last = jarpath.lastIndexOf(".jar") + 4;
   jarpath = jarpath.substring(first, last);
   System.out.println("Jar Folder: " + jarpath);
   new Popup(jarpath);
   JarFile jar = new JarFile(jarpath);
   return jar;
}

private static boolean verify_Jar_Integrity(JarFile jar) throws IOException {
   System.out.println("verify_Jar_Integrity Path: " + jar.getName());
   Enumeration<JarEntry> entries = jar.entries();
   while (entries.hasMoreElements()) {
      JarEntry entry = entries.nextElement();
      try {
         InputStream is = jar.getInputStream(entry);
      } catch (SecurityException se) {
         return false;
      }
   }
   return true;
}

public static void main(String[] args) {
   try {
      System.out.println(verify_Jar_Integrity(get_Path()));
   } catch (Exception e) {
      System.out.println("Error: " + e);
   }
}

Кроме того, я использовалBouncyCastle в другом месте кода, и для него нужны cldc_classes.zip и cldc_crypto.zip.Я хотел бы получить отдельное приложение JAR.Можно ли как-нибудь включить эти два почтовых индекса в банку, чтобы мне не нужно, чтобы пользователь загружал файл .lib?

...