当我尝试在 NetBeans 中运行我的整个项目时,我收到以下错误日志:
...
Task :run FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':run'.
> org.joor.ReflectException: java.lang.NoSuchFieldException: javaExecHandleBuilder
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 4s
Run Code Online (Sandbox Code Playgroud)
我不知道发生了什么,我在 build.gradle 中指定了主类...请帮助!
我想PositionService在iOS上使用Gluon Mobile.我编写了一个在桌面上运行的小型示例应用程序,提供(按预期)假位置更改,以及在Android上.但是,在iOS模拟器上,不会调用侦听器.以下是代码的相关部分:
public class BasicView extends View {
private static final Logger LOGGER = Logger.getLogger(BasicView.class.getName());
final Label label;
public BasicView(String name) {
super(name);
label = new Label();
VBox controls = new VBox(15.0, label);
controls.setAlignment(Pos.CENTER);
setCenter(controls);
// get current position
Platform p = PlatformFactory.getPlatform();
PositionService ps = p.getPositionService();
outputPos(ps.getPosition());
ps.positionProperty().addListener((obs, oldPos, newPos) -> {
LOGGER.log(Level.INFO, "\nobs: {0}\noldPos: {1}\nnewPos: {2}",
new Object[]{obs, oldPos, newPos});
outputPos(newPos);
});
}
private void outputPos(Position p) {
if (p != null) {
label.setText(String.format("We are currently …Run Code Online (Sandbox Code Playgroud) 我按照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 -v返回正确的信息.打开"显示视图"菜单
和选定的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 'com.gluonhq:charm:4.0.1'
}
jfxmobile {
downConfig {
version = '3.0.0'
plugins 'display', 'lifecycle', 'statusbar', 'storage'
} …Run Code Online (Sandbox Code Playgroud) Just a quick question. I made a JavaFX application and I want to get it working on Android. So far the only way I found to get this working is to use Gluon Mobile (JavaFXPorts). However, the free version has a nag screen that pops up every time you open the app, prompting you to buy a license.
Is this screen also going to be popping up for users who download the app in the app store or just for …
默认颜色com.gluonhq.charm.glisten.control.ProgressIndicator/ProgressBar是 material design blue。
如何改变颜色?
我尝试了不同的 JavaFX CSS 属性,但它不起作用。
我有一个客户端和一个服务器,两者都是用 Java 编写的,并且共享应该在彼此之间发送的 Java 类。我不确定我可以在移动设备上使用哪些库,因为我不知道 Dalvik 支持什么、RoboVM 支持什么等。不知道在这种情况下 Gluon Mobile 可以为我做什么。
具体来说,我有一个如下所示的文件:
class Data {
IntegerProperty int1 = new SimpleIntegerProperty(4);
ObjectProperty<Person> person = new SimpleObjectProperty();
ObservableList<Contact> contacts = FXCollections.observableArrayList();
// other properties
// also add the getters for the properties and the getters and setters for the values
}
Run Code Online (Sandbox Code Playgroud)
Person与Contact上面类似 - 它们主要包含数据属性和一些用于添加和从内部(私有)列表中删除的方法等。基本上它们就像只是带有属性包装器的bean或POJO。这是需要在服务器和客户端之间发送的数据,但只有包装的值很重要,而不是绑定。这让我想到了关于序列化的问题:javaFX 属性不可序列化,因此在这里建议将上述类制作为可外部化的类,并写入和读取包装的值。
最终,我不在乎我是否需要做这些定制的事情(尽管这是很多工作)或者是否有解决方法。我需要在服务器上有一个客户端可以调用的方法Data receiveDatafor(...),服务器获取Data data并返回它。客户端和服务器各自具有与Data对象无关的绑定。
目前我们在桌面内部使用 RMI。我读到 RMI 不受支持,而且它可能不是一个很好的选择,但它确实允许非常轻松地发送 java 对象。JavaEE 有 websockets,可以传输对象的二进制形式,但它是 …
我正在 Android 设备上使用 Gluon 对Listfrom进行排序。java.util即使分配了 8GB,该应用程序也无法针对 iOS 进行编译(内存不足),但这是另一个问题。
classpath 'org.javafxports:jfxmobile-plugin:1.3.4'
compile 'com.gluonhq:charm:4.3.2'
jfxmobile version = '3.2.4'
导致崩溃的这一行:
highscoreList.sort(comparing(Highscore::getScore).reversed()); //#89
03-22 09:42:14.709 27312 27337 E AndroidRuntime: FATAL EXCEPTION: JavaFX Application Thread
03-22 09:42:14.709 27312 27337 E AndroidRuntime: Process: com.x.pacman, PID: 27312
03-22 09:42:14.709 27312 27337 E AndroidRuntime: java.lang.NoSuchMethodError: No static method comparing(Ljava/util/function/Function;)Ljava/util/Comparator; in class Ljava/util/Comparator; or its super classes (declaration of 'java.util.Comparator' appears in /system/framework/core-libart.jar)
03-22 09:42:14.709 27312 27337 E AndroidRuntime: at com.x.pacman.HighscoreUtil.readHighscoreList(HighscoreUtil.java:89)
Run Code Online (Sandbox Code Playgroud)
我开始搜索,发现这篇关于 NoSuchMethodError 的文章 …
我有一个自定义ListCell实现,如下图所示。
左侧,代表日期,由 3 个标签组成,放入 aVBox和由计数器组成的“CounterContent” TextField,每个数字为 a HBox,包含在 a 中,两个Hboxes包含用于 kWh、kWh/day 等的标签. 这似乎太多了,无法高效运行。
我试图在后台任务中加载数据,显示进度指示器,而任务正在运行,但与桌面不同,在 android 上的性能非常差。每当我切换到列表视图时,垃圾收集就会启动并阻塞 ui 线程,因此进度指示器永远不会出现。
我已经在华为 Y-300、Android 4.1.1、javafxports 8.60.6(因为 javafxports 8.60.7 导致错误,导致TextField无法使用)和三星 S5 mini、Android 5+上尝试过。在三星手机上,性能总体上要好得多,就像预期的那样,因为我猜是提前编译,但仍然存在垃圾收集问题。此外,在列表视图中填充了单元格后,滚动不是很流畅。
列表单元是复杂的还是性能不佳的其他原因?
更新:
运行大量测试后,似乎滚动不流畅不是由性能问题引起的。至少在 S5 上(javafxports 8.60.7)。
我删除了所有 css 样式,并用单个标签替换了文本字段(计数器节点已经是一个自定义控件(忘记了),它在 2 Regions(不是HBoxes)中布置了文本字段,并且ListCell在构造函数中实例化了 的节点) . 此外,我切换了ListViewaCharmListView并设置了 android.monocle.input.touchRadius=1。
这些步骤都没有带来显着的改进。
澄清一下:与华为手机相比,S5和安卓5+的滚动是可以用的,但不是很流畅,导致用户体验不尽如人意。
在华为 (javafxports 8.60.6) 上,更改标签的计数器文本字段有显着改进,但还没有达到滚动可用的程度。直到我设置了这个神奇的实验开关:gluon.experimental.performance=true,这使得列表视图的滚动速度快如闪电(经过一点预热延迟),但仍然不是很流畅。
我有一个动画计时器,当我处理结束时,如果某个条件为真,我想向用户显示一个对话框。当我只是尝试在 stop() 方法之后调用对话框时,我遇到了这个异常(仅在移动设备上):
java.lang.IllegalStateException:动画或布局处理期间无法进入嵌套循环
因此,对于这种情况,我解决了将对话框包装在 Platform.runLater() 方法中的问题。
这是处理这种情况的正确方法吗?
如果不是,哪个是正确的?
我正在使用的对话框是胶子对话框:
http://docs.gluonhq.com/charm/javadoc/4.2.0/com/gluonhq/charm/glisten/control/Dialog.html
而在这个简单的表演上是不存在的,只有表演和等待。
我正在运行Gluon/charm 3.0.0版.我在我的JavaFX项目中添加了一个Java8编译的库(通过IntelliJ插件创建),在iOS上它按预期工作和构建,但在执行gradle任务时android或者androidInstall我得到了这个错误:
[ant:java] Java Result: 1
:createMainDexList FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':createMainDexList'.
> Exception in thread "main" com.android.dx.cf.iface.ParseException: InvokeDynamic not supported
at com.android.dx.cf.cst.ConstantPoolParser.determineOffsets(ConstantPoolParser.java:226)
at com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:132)
at com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124)
at com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:491)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToEndIfNecessary(DirectClassFile.java:397)
at com.android.dx.cf.direct.DirectClassFile.getAttributes(DirectClassFile.java:311)
at com.android.multidex.MainDexListBuilder.hasRuntimeVisibleAnnotation(MainDexListBuilder.java:191)
at com.android.multidex.MainDexListBuilder.keepAnnotated(MainDexListBuilder.java:167)
at com.android.multidex.MainDexListBuilder.<init>(MainDexListBuilder.java:121)
at com.android.multidex.MainDexListBuilder.main(MainDexListBuilder.java:91)
at com.android.multidex.ClassReferenceListBuilder.main(ClassReferenceListBuilder.java:58)
...while preparsing cst 0002 at offset 0000000f
...while parsing de/<removed>/traffic_light/library/Test.class
Run Code Online (Sandbox Code Playgroud)
我觉得有点奇怪的是,我甚至没有针对traffic_light的Test类,甚至在库中也没有.搜索错误我发现它可能需要Java 8来调用动态/支持Lambdas,但是例如Gluon的Presenter本身使用Lambdas.
此外,谷歌搜索我发现这个问题同样的问题,但遗憾的是胶子删除了他们的论坛,页面没有缓存在任何地方.
呼唤
File picturesDir = Services.get(StorageService.class)
.flatMap(s -> s.getPublicStorage("Pictures"))
.orElseThrow(() -> new RuntimeException("Error retrieving public storage"));
for (File pic : picturesDir.listFiles()) {
System.out.println("file " + pic.getName());
}
Run Code Online (Sandbox Code Playgroud)
没有列出任何文件。我认为它应该列出 iPhone 上我的图片库中的所有文件。
调用 s.getPublicStorage("") 它会列出两个文件夹:gluon、Pictures。
我怎样才能正确访问它?
使用javafx(使用javafxports和gluon-mobile)是Android App Development的新手.
我是否通过扩展MobileApplication类使用gluon-Api来构建我的项目.
使用示例程序 .Am尝试制作我自己的版本.
但是,在应用程序的开始启动这个不需要的对话框.
我在谈论这个不断出现在应用程序启动时的对话框.
这是我的代码.我已经扩展了MobileApplication类,以根据示例创建我自己的App版本.
package com.gluonapplication;
import com.gluonapplication.views.Home;
import com.gluonhq.charm.glisten.application.MobileApplication;
import static com.gluonhq.charm.glisten.application.MobileApplication.HOME_VIEW;
/**
*
* @author Guru
*/
public class MainApplication extends MobileApplication {
public void init()
{
addViewFactory(HOME_VIEW,() -> new Home(HOME_VIEW).getView());
}
public void postinit()
{
}
public void start()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这是Home类,它返回App的主视图.
package com.gluonapplication.views;
import com.gluonhq.charm.glisten.mvc.View;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.fxml.FXMLLoader;
/**
*
* @author Guru
*/ …Run Code Online (Sandbox Code Playgroud)