我有一个 jar 文件,我想从 SQL 存储过程调用/运行它。为此,我使用 xp_cmdshell。
我还没有创建存储过程,但基本上,存储过程的内容是
EXEC master..xp_cmdshell 'java -jar D:\...\...\...\Test_LowerJDK.jar';
我正在尝试通过SQL Server Management Studio运行此行,只是为了在创建官方存储过程之前看看它是否可以工作。但是,当我运行它时,它会给出以下消息。
Unable to access jarfile D:.........\Test_LowerJDK.jar
我不确定为什么会发生这种情况。我猜是因为我无法进入我想要的特定目录。如果是,我怎样才能转到我想要的特定目录,以便我可以运行该目录中的 jar 文件。
仅供引用 我尝试从通过命令提示符保存的目录运行我的 jar 文件
java -jar Test_LowerJDK.jar
我还尝试在 C: 中打开命令提示符并执行以下操作
java -jar D:\...\...\...\Test_LowerJDK.jar
两者都工作得很好。
此外,我尝试使用 xp_cmdshell 显示我当前的工作目录,
EXEC master..xp_cmdshell 'dir';
我当前的工作目录似乎是
Directory of C:\Windows\system32
我不想将 jar 文件粘贴到 C:\Windows\system32
中,因为我可能会把事情搞砸?我不确定这就是我没有这样做的原因。
最佳答案
我明白了为什么我收到以下消息。
Unable to access jarfile D:......\TeamFolder\Test_LowerJDK.jar
包含 Test_LowerJDK.jar 的文件夹只能由特定用户组访问。我的管理员帐户不属于可以访问 TeamFolder 的组,因此它无法访问 jarfile。
我尝试将 Test_LowerJDK.jar 复制到 C:\并尝试以下命令。
EXEC master..xp_cmdshell 'java -jar C:\Test_LowerJDK.jar';
效果很好。
我没有立即考虑这种情况的原因是因为使用管理员帐户我实际上可以通过 Windows 资源管理器访问并转到 TeamFolder。我忘记了 TeamFolder 实际上是我以管理员身份登录的计算机中的本地文件夹,这就是为什么我可以通过 Windows 资源管理器轻松访问 TeamFolder。
关于java - 使用 xp_cmdshell 时无法访问 jarfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39629968/