使用 Access VBA 获取 java jre/bin 文件路径

Posted

技术标签:

【中文标题】使用 Access VBA 获取 java jre/bin 文件路径【英文标题】:Getting the java jre/bin file path using Access VBA 【发布时间】:2018-11-02 14:52:37 【问题描述】:

我制作了一个自动更新数据库前端的数据库和 java 应用程序。唯一的问题是,我用来运行 jar 文件的代码引用了 java bin 文件的位置。我们的环境有不同的java版本,所以路径不能硬编码。

如何获取计算机当前的 jre/bin 位置?

Private Function RunJar()
    ChDir LocationToJar
    Shell """C:\Program Files\Java\jre7\bin\java"" -jar myprog.jar"
End Function

【问题讨论】:

为什么要使用 Java 应用程序来更新您的 Access 应用程序?在此过程中,您引入了 两个 主要依赖项来运行您的 Access - Access 安装(无论是作为独立的 Access 运行时还是作为 Office 的一部分) Java 运行时。如果自动更新程序是在一些现有的运行时交付的,您不认为对用户的要求会降低……例如第二个访问文件吗?还是本机 Windows EXE?哎呀,即使是 .NET 可执行文件也可以避免这个问题,因为在这种情况下,它们使用的是 Windows 提供的运行时库。 Java 意味着您必须自己提供。 我可以在 C++ 中为 exe 执行此操作,但是,我们所有的业务机器都需要 Java 版本。所以在这种情况下,我决定使用java。根据我是否得到任何有用的答案,我可能会使用 C++。 【参考方案1】:

您只需执行命令where java 并获取输出为 java jre 路径

dim jrePath as string 
jrePath = redirect("cmd","/c dir")
jrePath = redirect("where java","")

源码获取jre路径:https://superuser.com/questions/543810/where-is-java-jre-path-specified-in-windows-7

Source #2 获取 jre 路径:https://social.msdn.microsoft.com/Forums/en-US/c6165d7e-e466-4582-ae51-48bd51b01983/detect-java-bin-folder-automatically-through-vba?forum=isvvba

VBA 源代码:Capture output value from a shell command in VBA?

祝你好运。

【讨论】:

“重定向”在哪里定义? 它是在“源 VBA 代码”的代码中定义的,但对于如此简单的事情来说,这似乎代码太多了。必须有另一种方式。源 #2 可能会导致很多问题... 编辑:在那个下面还有另一个答案,这似乎更简单。打算试一试。 我在“源 VBA 代码”链接中使用了 Brian Burns 代码,但我很好奇是否可以在 cmd 窗口弹出时隐藏它。 ***.com/questions/23557720/…【参考方案2】:

我最终不需要使用直接路径,因为在它的位置使用“Java”就可以了。

我不确定这是否是因为在我的环境中,'where java' 总是以 ProgramData\Oracle\Java\javapath\Java.exe' 回复。

【讨论】:

以上是关于使用 Access VBA 获取 java jre/bin 文件路径的主要内容,如果未能解决你的问题,请参考以下文章

从 Java 调用 Access 中的 VBA 函数

在 Excel 中运行 VBA 代码以获取 Access 数据库中的 VBA

使用 Access VBA 从 Outlook 获取附件

Access 2013 - VBA - 记录集插入获取 ID

从 Excel VBA 的 MS Access 表单中获取价值

MS Access VBA从Web浏览器控件的内容中获取数据