当前位置: 首页 > 知识库问答 >
问题:

在Xcode应用程序中从Swift调用Java

夏侯浩气
2023-03-14

我知道Java应用程序可以捆绑为Mac应用程序,带有JavaSwing或JavaFX驱动的用户界面,以及捆绑的Java运行时(JRE)。但是我想用Swift编写的Xcode构建一个本机应用程序,带有Cocoa用户界面,可以调用Java库来处理一些数据。

我需要调用捆绑的JRE,调用所需的库(JAR文件),传递对Mac存储中文件的引用(或者该文件的内容作为内存中的大字符串),并取回字符串(XML或CSV或制表符分隔的数据)。

此问题类似于此问题,但针对Swift和现代macOS和Java8进行了更新。

共有1个答案

邵宏达
2023-03-14

除非您希望通过JNI之类的东西直接在内存中进行通信所涉及的所有痛苦,否则唯一的方法是使用NSTask(例如)读取/写入文件或读出标准来启动外部进程。

如果所有Java组件都在您的.app中,您可以直接引用捆绑的JRE和程序JAR。

/Applications/MyApp.app/.../java -jar /Applications/MyApp.app/.../MyAppJar.jar

不知道你打算如何捆绑JRE,因为这不会是一个Swing应用程序。也许你可以用< code>appbundler来做一个假挥杆。应用程序,然后只需将文件结构复制到您的本机应用程序。

如果是这样,请记住,您可能需要手动复制< code>bin/java,因为< code>appbundler不会自动包含在内。

 类似资料:
  • 问题内容: 我想从Java应用程序调用Servlet。问题是,该调用似乎未到达Servlet。我没有收到任何错误,但是没有到达Servlet中的第一个输出“ doPost”。如果我在Web浏览器中打开URL,我当然会得到如下错误:不支持GET等。但是至少我知道发生了一些错误。 我使用以下代码(ActionPackage类仅包含一个Vector参数,并且可序列化): Java应用程序: Servle

  • 问题内容: 我有一个用c#创建的dll,在调用时会执行一些数据库操作。我必须将一些参数从Java应用程序传递到dll中的方法。关于如何执行此操作的任何想法。 要么 通过Java应用程序在c#中调用方法的更好的主意吗? 谢谢 编辑:我的Java应用程序是AVAYA平台的标准Dialogue Designer应用程序,并且我已经开发了一个仅在.net SDK上工作的C#应用​​程序。所以我需要将数据从

  • 问题内容: 我想以编程方式确定是否直接从XCode(在模拟器中或在系留设备上)运行iOS应用。我尝试了此处描述的-DDEBUG解决方案,但是当我断开与Xcode的连接并重新运行该应用程序时,它仍然认为它处于调试模式。我认为我正在寻找的是此功能的Swift版本 问题答案: 说明: 您的C代码(以及下面的Swift版本)检查程序是否在 调试器的控制 下运行 , 而不是是否从Xcode运行。一个人可以在

  • 问题内容: 我在Swift xcode 7.1中创建了一个示例框架。然后为发布的概要文件构建框架。然后将发布的框架添加(嵌入)到iOS测试应用中。 该应用程序构建良好,但是在尝试对其进行存档时。发生错误,指出 “无法生成位码束,因为’… / Test / FW.framework / FW’是在没有完整位码的情况下构建的。位码的所有框架和dylib必须从Xcode Archive生成或为体系结构a

  • 问题内容: 是否可以在Xcode 8中使用Swift 2.2? 从Xcode 8发行说明: “ Xcode 8支持切换工具链,例如来自swift.org的工具链,而无需重新启动Xcode。(23135507)” 我一直试图在swift.org网站上找到swift 2.2工具链,但是找不到。在将Xcode 8配置为可与Swift 2.2一起使用方面取得任何成功 问题答案: 在XCode8中不能使用S

  • 我在visual studio中创建了一个dll(我没有使用任何win\u API函数)。我想从我生成的android.apk文件中调用这个dlll,但在运行这个文件时,我遇到了这个错误。 "java.lang.无法从加载器加载Testdll1dalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/], nativeLibrary