我正在解密一個PGP文件,我可以使用Python來完成,因爲我完全找不到資源/示例。我確實提出了問題here沒有運氣!從Python中調用.jar文件
但是,我確實在Java中開發了一些代碼來解密文件。
現在,我想從我的python代碼中調用這個jar文件,因爲我可以找到使用os.system或subprocess.call以類似方式調用外部程序的人。
下面是這是應該做的工作示例代碼:
os.system("java -jar PGPEncryption.jar BC.csv.pgp X.csv <password>")
x = subprocess.call(["java -jar PGPEncryption.jar BC.csv.pgp X.csv <password>"], shell=True)
print(x)
我沒有運氣打印結果。
任何建議將非常感謝!
編輯: 我也曾嘗試下面的代碼:
subprocess.call(['java', '-jar', 'abc.jar'])
它不工作和以下錯誤得出:
Exception in thread "main" java.lang.UnsupportedClassVersionError:
pgpencryption/PGPExampleUtil : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: pgpencryption.PGPExampleUtil. Program will exit.
據我所知,有'shell中運行= TRUE;應打印結果,以'stdout',即你不需要打印'x'。也許更好的解決方案是生成一個CompletedProcess對象,它具有'stdout'作爲屬性。請參閱[本文檔](https://docs.python.org/3/library/subprocess.html),它是解釋子流程的python頁面。 –
@Parth S Rawal,請參閱下面的答案。這可能會幫助你。 –