2016-08-01 43 views
0

我使用IDEA開發我的代碼,而在IDEA環境下,代碼運行良好,但是當我使用mvn clean install構建項目並使用此腳本運行projet時找不到任何支持AES/CBC/PKCS5Padding的供應商

#!/bin/bash 


source ~/.bashrc 

JAVA_OPTS="$JAVA_OPTS -Drun_dir=$MY_ROOT" 
JAVA_OPTS="$JAVA_OPTS -server -Xss256k -Xms1g -Xmx1g" 
JAVA_OPTS="$JAVA_OPTS -XX:-OmitStackTraceInFastThrow" 
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m" 
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+UseParNewGC" 
JAVA_OPTS="$JAVA_OPTS -XX:CMSFullGCsBeforeCompaction=4 -XX:CMSInitiatingOccupancyFraction=80 -XX:MaxTenuringThreshold=15" 
JAVA_OPTS="$JAVA_OPTS -Dclient.enczoding.override=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN" 
JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=./lib -Djava.library.path=./lib -cp ./resources" 

java $JAVA_OPTS Main 

談到錯誤

Cannot find any provider supporting AES/CBC/PKCS5Padding 

JDK是相同的版本,任何人都可以幫忙嗎?

+0

您從默認值,其中包括(大部分)的cryptoproviders,以一個錯誤的值改爲'java.ext.dirs',所以cryptoproviders不能使用。默認還包括'localedata.jar',我非常確定'zh-CN'不在運行時的基本部分,所以我希望你的程序中的i18n也會失敗,但也許是默默的。 JRE期望將'java.ext.dirs'用於Java定義的擴展機制,並將其用於其他任何事情都可能導致問題;類路徑是用於用戶編寫的(或第三方)代碼。 –

+0

感謝, 'CLASSPATH = $ CLASSPATH:$ JAVA_HOME/lib中/的tools.jar 在'LS JAR/lib' 做 CLASSPATH = $ CLASSPATH:./的lib/$罐子; 做 JAVA_OPTS = 「$ JAVA_OPTS -cp ./resources」 的java $ JAVA_OPTS -classpath $ CLASSPATH Main'我改變了這樣的腳本,而且它的工作 – bricks

回答

0

感謝dave_thompson_085, 腳本改爲

source ~/.bashrc 

CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar 

for jar in `ls ./lib` 
do 
    CLASSPATH=$CLASSPATH:./lib/$jar; 
done 
CLASSPATH=$CLASSPATH:./resources 


JAVA_OPTS="$JAVA_OPTS -server -Xss256k -Xms1g -Xmx1g" 
JAVA_OPTS="$JAVA_OPTS -XX:-OmitStackTraceInFastThrow" 
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m" 
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+UseParNewGC" 
JAVA_OPTS="$JAVA_OPTS -XX:CMSFullGCsBeforeCompaction=4 -XX:CMSInitiatingOccupancyFraction=80 -XX:MaxTenuringThreshold=15" 
JAVA_OPTS="$JAVA_OPTS -Dclient.enczoding.override=UTF-8 -Dfile.encoding=UTF-8" 

java $JAVA_OPTS -classpath $CLASSPATH Main 
+0

如果你的'的lib/*'罐子都有後綴'。 jar'(或'.JAR'),並且沒有隱藏的文件(以點開頭),並且由於至少Java6(我認爲5但不能再驗證),所以可以使用'CLASSPATH = ./ lib/*: ./resources'請參閱http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/classpath.html'瞭解類路徑通配符'。 –

相關問題