Tag: interop

Java和C#之间的通信

我发现有一个名为GCT的.Net工具包 – Group Communication Toolkit是JGroup的C#版本。 我想知道这个和JGroup是否可以连接在一起,以使java和C#客户端相互通信。 如果没有,那么使java程序和C#程序进行通信的最佳选择是什么? 我遇到的另一个选择是XMPP实现。 我需要在同一台计算机上运行的这两个程序之间传递非常快的消息。 主要要求是,当某些特定事件被触发时,该程序中的任何一个都会向另一个发送消息。 任何想法都欢迎。

JavaFX脚本和Java

简单的问题:我可以混合使用我的桌面应用程序Java和JavaFX Script代码吗? 如果有可能,您能否提供一些示例链接? 或者我可以将自定义的javafx CustomNode-s打包在一个jar中,并在我的项目中与标准SWING组件并排使用它们吗?

Scala在访问Java方法时遇到问题

所以,我有一些用Java编写的东西,我想在Scala中扩展它…我遇到的问题是Scala没有看到我需要的方法。 以下是它的设置方式:Player扩展Mob,Mob扩展Entity。 我需要访问未在Mob或Entity中定义的Player中的方法,但Scala认为即使Java存在也不存在。 它可以看到Mob和Entity定义的方法就好了。 此外,我所谈论的所有方法都是非静态的。 那么,我做错了什么,或者这是Scala强加的限制? 编辑 – 这是相关代码: package test import rsca.gs.model.Player object Test { def handle(p:Player): Unit = { p.getActionSender().sendTeleBubble(0, 0, false); } } 玩家类: package rsca.gs.model; // imports public final class Player extends Mob { // Implemented methods (not going to post them, as there are quite a few) // Relevant code […]

在后续Java调用Play 2.0的fakeRequest中保持会话

我正在寻找一种在我的Java测试中使用Play 2.0的fakeRequest时保留会话的方法,但是在基于Scala的JAR中调用方法时我的尝试失败了。 基于Scala问题中提到的拉取请求, 在测试期间向会话添加值(FakeRequest,FakeApplication) ,我认为以下内容可能适用于Java: public Session getSession(Result result) { play.api.mvc.Cookies scalaCookies = play.api.test.Helpers.cookies(result.getWrappedResult()); play.api.mvc.Cookie scalaSessionCookie = scalaCookies.get(play.api.mvc.Session.COOKIE_NAME()).get(); scala.Option optionalCookie = scala.Option.apply(scalaSessionCookie); // Compiles fine, but fails with NoSuchMethodError: play.api.mvc.Session scalaSession = play.api.mvc.Session.decodeFromCookie(optionalCookie); return new play.mvc.Http.Session(Scala.asJava(scalaSession.data())); } 这编译得很好,但在运行测试时它让我: java.lang.NoSuchMethodError: play.api.mvc.Session.decodeFromCookie(Lscala/Option;)Lplay/api/mvc/Session; 作为Scala newby,我真的不知道我是否接近。 我认为 ,Scala会话确实通过CookieBaker公开(特征)该方法 。 请注意,我不一定要找到一种方法来运行上面的代码; 以上只是获得会议的第一步(可能)。 接下来我可能会尝试使用类似play.api.mvc.Session.encodeAsCookie(session)类的东西将它传递给后续请求。 喜欢ZenTasks演示 : @Test public void testLoginAndMore() { […]

在与Leiningen的Java之间夹着Clojure

对于一个类,我需要编写一些JVM代码,我希望使用Clojure。 我得到它与软件堆栈的底部部分一起工作,但我无法让它在位于顶部和底部的GUI层之间工作。 我的主要问题是让Java GUI识别我的Clojure文件。 我想使用Leiningen,但Java编译解决方案似乎并没有解释这种互操作。 这里的答案似乎正是我所需要的。 我不明白在哪里放置代码等(仅仅是不够详细)。 有人有任何提示吗? 我尝试制作一个插件 ,但它似乎不起作用。 我知道我的案例肯定是在问题的边缘,但一个解决方案将使Clojure在教室环境中更容易使用。 谢谢! 更多细节: 使用已编译的Clojure jar我没有太多运气。 我需要创建一个(ugh)有状态的Clojure类(即方法不能是静态的)。 我的类的代码(src / final_project / MyLinkLayer.clj)看起来像 (ns final_project.MyLinkLayer (:gen-class)) (defn -init[s] (print s)) (defn -send [dest data len] (println data)) (defn -recv [trans] (println trans)) (defn -status [] (println “I am a status!”)) (defn -command [cmd value] (println (str cmd […]

Java客户端到WCF服务互操作与相互证书 – 无法解析KeyInfo以validation签名

exception:MessageSecurityException:无法解析用于validation签名的KeyInfo:KeyInfo’SecurityKeyIdentifier 我必须设置一个WCF服务来接收来自Java客户端的SOAP调用,该客户端使用以下标头发送签名内容: … … … CN=XXXXXXXX 111122222 xxxxx xxxx 我尝试过设置以下绑定和行为: 但是我在服务器事件日志中遇到以下exception: ClientIdentity: ActivityId: MessageSecurityException: Cannot resolve KeyInfo for verifying signature: KeyInfo ‘SecurityKeyIdentifier ( IsReadOnly = False, Count = 1, Clause[0] = X509IssuerSerialKeyIdentifierClause(Issuer = ‘CN=XXXXXX) ) ‘, available tokens ‘SecurityTokenResolver ( TokenCount = 0, ) ”。 我们必须让签名validation工作,我们不可能改变java客户端发送的内容。

如何在Android应用程序中调用Mono for Android类?

我在Mono for Android项目中创建了一个相当简单的Activity: [Activity(Label = “AndroidApplication1”, MainLauncher = true, Icon = “@drawable/icon”)] public class Activity1 : Activity { private string value = “intitial”; [Export] public string GetString() { return value; } [Export] public void SetString(string newValue) { value = newValue; } } 该活动应仅作为概念validation,因此其简单性。 现在,我希望能够从“普通的”基于Java的Android应用程序调用方法GetString()。 在Xamarin的文档中 ,我已经阅读了Java to Managed interop,这似乎正是我正在寻找的。 如果我理解正确,当Mono for Android应用程序编译时,它会生成称为Android Callable Wrappers(ACW)的Java类。 然后我应该能够从基于Java的Android应用程序调用这些ACW上的方法。 […]

CryptoAPI C ++使用AES与Java互操作

我正在尝试使用CryptoAPI在C ++中加密并使用SunJCE解密Java。 我已经获得了RSA密钥 – 并在测试字符串上进行了validation。 但是,我的AES密钥不起作用 – 我得到javax.crypto.BadPaddingException: Given final block not properly padded 。 C ++加密: // init and gen key HCRYPTPROV provider; CryptAcquireContext(&provider, NULL, MS_ENH_RSA_AES_PROV, PROV_RSA_AES, CRYPT_VERIFYCONTEXT); // Use symmetric key encryption HCRYPTKEY sessionKey; DWORD exportKeyLen; CryptGenKey(provider, CALG_AES_128, CRYPT_EXPORTABLE, &sessionKey); // Export key BYTE exportKey[1024]; CryptExportKey(sessionKey, NULL, PLAINTEXTKEYBLOB, 0, exportKey, &exportKeyLen); // skip […]

使用JFXPanel Swing interop防止JavaFX线程死亡?

我将几个JFXPanels嵌入到Swing应用程序中,当JFXPanel不再可见时,JavaFX线程就会死掉。 这是有问题的,因为在JavaFX线程死后创建另一个JFXPanel将不会启动另一个JavaFX线程,因此JFXPanel将为空。 据我所知,JFXPanel ctor通过调用以下命令启动JavaFX线程: PlatformImpl.startup(new Runnable() { @Override public void run() { // No need to do anything here } }); 稍后,一旦JFXPanel具有父组件,就会调用其addNotify方法,该方法调用registerFinishListener ,该方法使用PlatformImpl注册PlatformImpl.FinishListener() 。 注册FinishListener的行为可防止JavaFX线程在调用PlatformImpl.checkIdle()时死亡。 当JFXPanel不再可见时,其removeNotify方法是调用deregisterFinishListener()调用: private synchronized void deregisterFinishListener() { if (instanceCount.decrementAndGet() > 0) { // Other JFXPanels still alive return; } PlatformImpl.removeListener(finishListener); finishListener = null; } 当instanceCount为零时, FinishListener被删除,导致PlatformImpl.tkExit在以下代码中调用PlatformImpl.tkExit ,导致JavaFX线程死亡: private static void notifyFinishListeners(boolean […]

如何在Clojure中加载程序资源

如何在Clojure程序中加载程序资源,如图标,字符串,图形元素,脚本等? 我使用的项目布局类似于许多Java项目中的项目布局,其中“资源”目录悬挂在“源”目录之外。 从源创建一个jar文件并包含资源,但我似乎无法像在Java中那样加载资源。 我尝试的第一件事就像是 (ClassLoader/getSystemResource “resources/myscript.js”) 但永远找不到资源。 你可以做类似的事情 … (let [cls (.getClass net.mydomain.somenamespace) strm (.getResourceAsStream cls name) ] … 其中name是要加载的资源的name ,但流是nil 。 您可以尝试使用类似的上下文类加载器 … (let [thr (Thread/currentThread) ldr (.getContextClassLoader thr) strem (.getResourceAsStream ldr name)] … 但是, strem总是零。 令人沮丧的是,我尝试将资源文件放在程序的几乎每个目录中。 它们被正确地复制到jar中,但我似乎仍然无法加载它们。 我已经查看了load函数和运行时库的语言来源,但我没有“得到”它。 任何帮助,将不胜感激。 编辑 :这是一个更具体的例子。 在Java中,如果要将MarkDown转换为HTML,可以使用showdown.js脚本并编写如下内容: package scriptingtest; import java.io.InputStreamReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public […]