java - 使用 xp_cmdshell 时无法访问 jarfile

标签 java sql-server tsql jar xp-cmdshell

我有一个 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/

相关文章:

java - 开箱贵吗?

c# - EF6 - 没有做我对 .Any() 的预期

sql - 如何仅使用月份和年份获得月份的最后一天?

sql - 从 SQL Server 中的大量表中删除时如何减少事务日志的使用?

java - Jenkins 管道异常 java.io.NotSerializedException : hudson. model.User

java - 异常消息为空?

java - 代码在 txt 文件中找不到字符串。我的代码有什么问题吗?

sql-server - 将系统数据库恢复到具有不同名称的 SQL Server 时会发生什么情况?

c# - EF 6 Code First From Database - 调用现有的存储过程

sql-server - 连接 FOR XML 更改编码