2011-09-18 10 views
5

Estoy tratando de hacer ejecutable simple * .jar a través de proguard plugin para sbt 10. *.¿Cómo decirle a sbt-proguard que incluya java * .jars?

Todo parece estar bien, excepto que SBT-Proguard no incluye frascos de Java (en mi caso mysql-connector-java-5.1.10.jar) Porque cuando estoy tratando de correr tarro de salida con

java -jar proguard-output.min.jar

me estoy

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
(SBT, mientras que `run` va conector de manera mysql bien es definitivamente en el proyecto).

he tratado de aprovechar ese problema mediante la adición frasco explícitamente en build.sbt:

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

otra parte en el registro de Proguard:

... 
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) 
... 

Pero sigo teniendo la misma excepción. ¿Qué estoy haciendo mal?

Respuesta

3

La clase se especifica en la entrada, pero el código solo la instancia por introspección, lo que ProGuard no puede saber. Por lo tanto, debe especificar explícitamente que debe conservarse en la salida.

Cfr. Manual de ProGuard> Ejemplos>Processing database drivers

Cfr. Manual de ProGuard> Solución de problemas>ClassNotFoundException

Una solución más segura probablemente no sea procesar tarros de terceros como el controlador JDBC, sino especificarlos en su lugar como tarros de biblioteca.

Cuestiones relacionadas