无法使用gradle为移动设备构建胶子项目

我按照http://docs.gluonhq.com/charm/4.0.1/#_getting_started上的说明进行操作。 我正在使用eclipse 4.5.2和JDK 1.8.0_102。 我还从https://developer.android.com/studio/index.html#Other下载了带有24/25 API级别SDK的Android Studio。 这是我做的: 下载gradle 3.1并设置环境变量,以便gradle -v返回正确的信息。 从http://download.gluonhq.com/tools/eclipse/release安装了eclipse gluon插件版本2.4.0 从Buildship安装Buildship 1.0.21 – http://download.eclipse.org/buildship/updates/e45/releases/1.0 创建了胶子项目,如教程和检查平台所示:android,iOS和桌面。 项目已成功创建。 打开“显示视图”菜单 和选定的Gradle任务 gradle任务视图与教程不同: 我选择了GluonTest/application/run任务,它在桌面上运行良好。 但是我找不到androidInstall和launchIOSDevice任务,如图所示。 这是我的gradle.build文件: buildscript { repositories { jcenter() } dependencies { classpath ‘org.javafxports:jfxmobile-plugin:1.1.1’ } } apply plugin: ‘org.javafxports.jfxmobile’ repositories { jcenter() maven { url ‘http://nexus.gluonhq.com/nexus/content/repositories/releases’ } } mainClassName = ‘gluon.main.GluonApplication’ dependencies { compile […]

使用Tomcat,@ WebFilter不能与web.xml中的一起使用

这是一个有效的web.xml: 30 rememberMeCookieFilter be.example.fun.jsp.filters.RememberMeCookieFilter mustBeSignedInFilter be.example.fun.jsp.filters.MustBeSignedInFilter rememberMeCookieFilter /* mustBeSignedInFilter /private/* 当我删除元素并使用以下注释时: @WebFilter(filterName=”rememberMeCookieFilter”) public class RememberMeCookieFilter implements Filter @WebFilter(filterName=”mustBeSignedInFilter”) public class MustBeSignedInFilter implements Filter 然后Tomcat 7.0.14给我以下错误: java.lang.IllegalArgumentException: Filter mapping must specify either a or a at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:2956) at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2915) at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1180) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) … 我按照这个问题的答案,但这对我不起作用。 以下是我的Web应用程序的依赖项: org.slf4j slf4j-api 1.6.4 ch.qos.logback logback-core 1.0.0 ch.qos.logback logback-classic 1.0.0 org.codehaus.groovy […]

启动Safari并等待它关闭

题 我想启动Safari Web浏览器作为访问特定网站的过程,然后等到它关闭。 一种特殊情况是浏览器可能已经打开并运行,因为用户可能已经访问过某个网站。 在这种情况下,浏览器可能会在现有窗口中打开一个新选项卡,新启动的进程将立即终止。 这不应该混淆我的等待过程:我要么想要一个新的浏览器窗口(如果可以以某种方式强制执行,可能通过命令行参数)并等待关闭,或者保持现有的浏览器窗口并等到所有选项卡由此产生我的过程已关闭。 环境 我认为没关系,但我的编程环境是Java ,你可以假设我知道浏览器的路径。 例 我可以获得预期行为的唯一浏览器是Internet Explorer (叹息)。 在这里,我需要基本上在一个临时文件夹中创建一个新的批处理脚本 start /WAIT “” “C:\Program Files\Internet Explorer\iexplore.exe” -noframemerging http://www.test.com/ 然后我运行批处理脚本而不是直接浏览器,并在等待完成后删除它。 预期的过程 使目标过程更清晰: 我的程序开始了。 我的程序将Safari浏览器作为单独的进程启动,并提供一个URL作为该进程的参数进行访问。 Safari浏览器作为新进程异步运行,并访问提供的URL。 到目前为止,这很容易。 启动新进程(Safari浏览器)后,我自己的程序应该等待所述进程终止。 这是困难的部分,因为 许多现代浏览器启动多个进程。 我需要等待所有这些。 许多现代浏览器可能以某种方式“脱离”我自己启动的进程。 对不起,我不知道一个更好的词,我的意思是:我启动一个进程然后启动另一个进程并立即终止,而另一个进程继续运行。 如果我等待我的程序最初启动的浏览器进程,则在浏览器仍处于打开状态时等待将完成。 上面的一个特例是在许多浏览器中实现的选项卡式浏览:如果浏览器在我启动时已经打开(在用户启动的单独进程中),我新启动的浏览器进程可能会简单地传达URL以访问现有流程并终止。 当我的程序认为她已关闭浏览器时,用户仍在我提供的URL上。 通过指定特殊的命令行参数(例如IE的noframemerging可能会禁止此问题。 一旦浏览器终止或者与我提供的URL相关的所有标签都已关闭,我的程序将停止等待,而是继续开展业务。 用例是我有一个可以在本地运行或在服务器上运行的Web应用程序。 如果它在本地运行,它将启动Web服务器,然后打开浏览器以访问条目页面。 关闭浏览器后,该Web应用程序也应该关闭。 这适用于Internet Explorer。 对于所有其他情况,用户必须关闭浏览器,然后明确地关闭Web应用程序。 因此,如果我能够可靠地等待Safari完成,这将使用户体验更好。 方案偏好: 解决方案按以下顺序是优选的 任何与纯Java JRE一起提供的东西。 这包括浏览器的特殊命令行参数。 需要我做的事情,例如,创建批处理脚本(例如在IE的情况下)。 任何需要第三方开源库的东西。 任何需要3rth党闭源图书馆的东西。 […]

ActionListener最佳实践

对不起标题,可能太通用了。 我已经阅读了Java 如何编写动作监听器教程,我已经阅读了这个问题 ,但我仍有一些疑问:当我不得不多次执行相同的动作时,我想知道哪种解决方案是最好的。 我想重用相同的ActionListener ,但我不确定如何以最好的方式实现这一点(在术语方面:代码可读性,代码可持续性,性能和代码风格)。 首先是“标准”代码(如果我不打算重用动作监听器,我将使用它): btnMenu.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { Navigator.showMenu(); } } ); 这样我就无法重用任何obv,因为它是一个匿名的内部类…… 现在,我可以想到以下解决方案: 在字段中存储匿名内部类的引用(很可能是static final ); 编写一个实现ActionListener接口的新类。 解决方案1的示例代码: public static final MENU_ACTION_LISTENER = new ActionListener() { public void actionPerformed(ActionEvent e) { Navigator.showMenu(); } }; btnMenu.addActionListener(MENU_ACTION_LISTENER); 解决方案2的示例代码: // package-private, only GUI-package classes should be able to use […]

Spring MVC:不反序列化JSON请求体

我正在开发一个Spring MVC项目,我需要完成的任务之一要求我在POST请求中通过用户发送一串JSON数据。 我知道Spring会使用Jackson将JSON反序列化为对象,但如果我尝试类似以下内容: @RequestMapping(value = “/test”, method = RequestMethod.POST) public void doSomething(@RequestBody String json) { // do something } 我只是回到了HTTP 400 Bad Request(“客户端发送的请求在语法上是不正确的。”)。 如何将客户端发送的原始JSON作为字符串?

调用一个mysql函数在hibernate中返回varchar

我试图在hibernate中使用mysql find_in_set字符串函数但不幸的是我无法使用它甚至尝试通过创建这些寄存器函数 registerFunction(“findInSet”,newSQLFunctionTemplate(Hibernate.STRING,”FIND_IN_SET(?1,?2)”)); registerFunction(“findInSet”,newSQLFunctionTemplate(Hibernate.INTEGER,”FIND_IN_SET(?1,?2)”)); registerFunction(“findInSet”,new StandardSQLFunction(“find_in_set”, Hibernate.INTEGER)); 使用mysqldialect但没有人工作..任何人请告诉我如何在hibernate中使用mysql字符串函数。 或对上述寄存器function的任何更改。 提前致谢, 最诚挚的问候,拉贾。

如何从数据库加载java类?

喜欢以下源代码: package util.abc; public class Test{ public String out(){ return “Hello World!”; } } 我可以用: Class c = Class.forName(“util.abc.Test”); 获取此类,但我必须将此源文件( Test.java )放在ClassPath /util/abc/ 我想从数据库动态加载这个类(将源代码存储为string或binary ) 这个有可能 ? 感谢帮助 :)

Eclipse Java项目文件夹组织

我是从C#/ Visual Studio背景来到Java和Eclipse。 在后者中,我通常会组织一个这样的解决方案: \ MyProjects下\ MyApp的\ MyAppsUtilities \ LowerLevelStuff MyApp将包含一个用于构建.exe的项目,MyAppsUtilities将生成一个由.exe调用的程序集DLL,而LowerLevelStuff可能会构建一个包含更高级实用程序DLL使用的类的程序集。 在Eclipse(Ganymede,但可以说服切换到Galileo)我有: \ MyProjects下\工作空间\ MyApp的 当我创建我的初始项目时。 有一个选项可以将源文件和构建文件放在同一个文件夹中,但是我在一个反映我的包层次结构的路径上创建了.java文件: \ MyProjects下\工作区\ MyApp的\ SRC \ COM \ myCompany的\ MYAPP \ MyApp.java 我的问题是:当我为.jar文件创建子项目(是正确的Java / Eclipse术语吗?)时,类似于.NET中的上述MyAppsUtilities和LowerLevelStuff程序集DLL,可以(应该)我等效地组织文件夹吗? 例如: \ MyProjects下\工作空间\ MyApp的\ SRC \ COM \ myCompany中\ MYAPP \ myapputilities \ MyAppsUtilities.java 组织这些东西的标准/正确方法是什么,它是如何在IDE中专门完成的?

Android ACTION_IMAGE_CAPTURE有时不会调用onActivityResult

在我们的代码中,我们使用的getPhoto方法如下所示: public void getPhoto(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); captureFile = new File(getCaptureFilePath()); captureUri = Uri.fromFile(captureFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri); startActivityForResult(intent, CAPTURE_IMAGE); } 和onActivityResult: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, “Came”); if (resultCode == RESULT_OK) { if (requestCode == CAPTURE_IMAGE) { try { captureFile = new File(getCaptureFilePath()); captureUri = Uri.fromFile(captureFile); […]

使用JVisualVM从Java中的远程应用程序获取堆转储

我运行JVisualVM(Windows XP,Sun Java 1.6.0.13,32位客户端VM)来监视远程应用程序(Linux,Sun Java 1.6.0.07,64位服务器VM)。 在启动实际的远程应用程序之前,我使用all访问策略在远程计算机jstatd上启动: grant codebase “file:${java.home}/../lib/tools.jar” { permission java.security.AllPermission; }; 然后我使用命令行启动实际的应用程序 java -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=3333 compileTest.Main 从客户端计算机,我可以看到远程应用程序并监视它。 我也可以进行线程转储等。遗憾的是,堆转储按钮显示为灰色。 如何使用JVisualVM从远程监控的应用程序获取堆转储? 我尝试使用jConsole。 使用jConsole,可以使用com.sun.management.HotSpotDiagnostic dumpHeap操作进行远程堆转储。 我希望将转储传输到客户端并使用JVisualVM提供的工具进行分析。 我怎样才能做到这一点?