تشغيل Proguard على OS X: أين تعادل Apple لـ RT.JAR؟
سؤال
أنا أركض بروغ لتقليص ملف الجرة الخاص بي. واحدة من المعلمات التي يحتاجها هي جرة وقت تشغيل النظام. هذا في $JAVA_HOME/lib/rt.jar
على توزيعات الشمس ، ولكن ليس على Mac OS X من Apple (V10.6 (Snow Leopard) في حالتي).
هل يوجد RT.JAR لنظام التشغيل X؟
المحلول
يطلق عليه classes.jar وهو under/shestem/library/frameworks/javavm.framework/classes
انظر هنا للحصول على التفاصيل:
http://lists.apple.com/archives/java-dev/2003/mar/msg01530.html
نصائح أخرى
إدخال المدونة هذا يصف طريقة مباشرة نسبيًا لحل المشكلة دون تعديل تكوين Proguard.
يوصي الإدخال بإنشاء رابطين رمزيين ، لذلك rt.jar
و jsse.jar
موجودة في المسار الذي يتوقعهم بروغوارد.
يقف في /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib
الدليل وتشغيل الأوامر التالية حل المشكلة بالنسبة لي:
sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .
هناك بعض التفسير لكيفية الوصول إلى rt.jar
ما يعادل في ما الذي يجب أن أقوم بتعيين java_home على OSX سؤال.
الجواب المختصر هو استخدام نتيجة /usr/libexec/java_home
أو لضبط JAVA_HOME
إلى $(/usr/libexec/java_home)
ثم ابحث classes.jar
(يعادل OS X من RT.JAR) في JAVA_HOME/bundle/Classes/classes.jar
على نظامي (Mojave 10.14.3 مع JDK1.8) ، لا يوجد شيء classes.jar
إلا في ذاكرة التخزين المؤقت (Gradle Caches (~/.gradle/caches/
). ومع ذلك ، هناك rt.jar
في /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/rt.jar
. لقد ربطته و jsse.jar
بنفس الطريقة مثل هنريك من Contents/Home/lib
مجلد:
➜ lib sudo ln -s ../jre/lib/rt.jar
➜ lib sudo ln -s ../jre/lib/jsse.jar
وبروغوارد يعمل الآن.