【问题标题】:Run a Java class in the terminal with AppleScript使用 AppleScript 在终端中运行 Java 类
【发布时间】:2012-12-24 10:05:08
【问题描述】:

我有一个名为 Adventure.class 的 java 类。 我有一个名为 Adventure 的 AppleScript 应用程序。 我正在尝试让 Adventure 应用程序在 Mac 上的终端中运行 Adventure.class。 基本上,我试图将它放在可下载文件夹的位置,里面是应用程序和标有“文件”的文件夹。 files里面是一个bin文件夹,里面是class文件。 Adventure.app 位于主目录中,带有文件夹。 到目前为止,这是我的 AppleScript。

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 中导航到该文件夹​​,因为当您执行下一行时它不会停留在该文件夹中。任何帮助将不胜感激:)

【问题讨论】:

  • 尝试使用设置为包含 .class 文件的文件夹的类路径参数。即“java -classpath”&newpath&“files/bin Adventure”

标签: java macos terminal applescript


【解决方案1】:

您可以结合“cd”命令来设置 shell 脚本的路径。例如这里我 cd 到桌面然后获取文件列表...

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

【讨论】:

    【解决方案2】:

    我最终让它与它一起工作(在命令执行之前也提供了一堆空行和东西):

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 2017-08-02
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      相关资源
      最近更新 更多