2013-01-10 82 views
0

我有一個名爲Adventure.class的java類。 我有一個名爲Adventure的AppleScript應用程序。 我正試圖讓Adventure應用程序在Mac上的終端中運行Adventure.class。 基本上,我試圖讓它在可下載文件夾的位置,裏面是應用程序和標有「文件」的文件夾。文件內部是一個bin文件夾,裏面是類文件。 Adventure.app位於主目錄中,包含文件夾。 這是我的AppleScript到目前爲止。用AppleScript在終端中運行Java類

set filepath to POSIX path of (path to me) 
set newpath to text 1 thru ((offset of "Adventure.app" in filepath) - 1) of filepath 
do shell script "java " & newpath & "files/bin/Adventure" 

不管怎麼說,這是引發此錯誤:

java.lang.NoClassDefFoundError: /Users/Russell/Documents/Adventure/files/bin/Adventure (wrong name: Adventure) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

我通常可以通過在終端中輸入java Adventure當我在正確的文件夾啓動類。但是,我無法導航到AppleScript中的該文件夾,因爲當您執行下一行時,它不會保留在該文件夾中。任何幫助將不勝感激:)

+1

嘗試使用classpath參數設置爲包含您的.class文件的文件夾。即「java -classpath」&newpath&「files/bin Adventure」 –

回答

0

你可以結合一個「cd」命令來設置shell腳本的路徑。比如這裏我cd到桌面,然後獲取文件夾列表...

set desktopFolder to path to desktop 
do shell script "cd " & quoted form of POSIX path of desktopFolder & "; ls" 
0

我最終得到了它這個工作(提供了一系列的命令執行之前的空行之類的東西,以及) :

set filepath to POSIX path of (path to me) 
set newpath to text 1 thru ((offset of "TextAdventure.app" in filepath) - 1) of filepath 
do shell script "open /Applications/Utilities/Terminal.app" 
tell application "Terminal" 
    activate 
    do script "cd \"" & newpath & "TextAdventure.app/Contents/Java/\"" 
    do script "echo \" 


























\"" in window 1 
    do script "java Adventure" in window 1 
end tell