2011-09-18 13 views
5

Sbt için proguard plugin üzerinden tek yürütülebilir * .jar yapmaya çalışıyorum 10. *. Birlikte çıkış kavanozu yönetmeye çalışıyorum zamanNasıl sbt-proguard java * .jars içerecek?

Tüm java kavanozları içermez (benim durumumda mysql-bağlayıcı-java-5.1.10.jar) neden olduğu sbt-ProGuard dışında iyi görünüyor

java -jar proguard-output.min.jar

Ben

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

alıyorum (run` ince yüzden mySQL konektörü gider `sbt projede kesinlikle iken).

proguardInJars += Path.userHome/".m2"/"repository"/"mysql"/"mysql-connector-java"/"5.1.10"/"mysql-connector-java-5.1.10.jar" 

dahası proguard günlüğüne:

ben build.sbt açıkça kavanoz ekleyerek bu sorunu kaldıraç çalıştık

... 
Preparing output jar 
... 
Copying resources from program jar [/home/kostya/.m2/repository/mysql/mysql-connector-java/5.1.10/mysql-connector-java-5.1.10.jar] (filtered) 
... 

Ama hala aynı alıyorum istisna. Neyi yanlış yapıyorum?

cevap

3

Sınıf, girdide belirtilir, ancak kod yalnızca ProGuard'ın bilmediği iç gözlem tarafından başlatır. Bu nedenle, çıktıda korunmak zorunda olduğunu açıkça belirtmeniz gerekir.

Cfr. ProGuard kılavuzu> Örnekler> Örnekler>Processing database drivers

Cfr. ProGuard kılavuzu> Sorun Giderme>ClassNotFoundException

Daha güvenli bir çözüm, JDBC sürücüsü gibi üçüncü taraf kavanozları işlemek değil, bunun yerine kitaplık kavanozları olarak tanımlamaktır.