我有一个奇怪的问题,到目前为止我无法找到任何解决方案。我对 gradle 很陌生,并使用 kotlin 作为我的构建文件的脚本语言设置了一个项目。
无论我在哪里,人们似乎都在build.gradle.kts文件中具有全面的自动完成功能,但就我而言,IntelliJ 表现得好像它无法访问源代码。没有/非常基本的自动完成,只有非常基本的语法突出显示发生。
例如,如果我点击 plugins` 块(或任何其他与此相关的块)来查看定义,IntelliJ 会告诉我“找不到要到达的声明”
很少有上下文相关的自动完成功能:
我已经阅读了有关将分发 jar添加到文件的答案,但它没有改变任何内容。我的看起来像这样:-allgradle-wrapper.propertiesgradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Run Code Online (Sandbox Code Playgroud)
我在用:
IntelliJ IDEA 2019.3.1 (Ultimate Edition)
Build #IU-193.5662.53, built on December 18, 2019
Runtime version: 11.0.5+10 amd64
VM: OpenJDK 64-Bit Server VM by Oracle Corporation
Linux 5.4.12-arch1-1
Memory: 1981M
Cores: 8
Run Code Online (Sandbox Code Playgroud)
Gradle版本是:
./gradlew -v
------------------------------------------------------------
Gradle 6.1
------------------------------------------------------------
Build time: 2020-01-15 23:56:46 UTC
Revision: 539d277fdba571ebcc9617a34329c83d7d2b259e
Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version …Run Code Online (Sandbox Code Playgroud) 我有一个装满POJO的ListView,并希望GUI中有一个标签来显示所选项目的信息.
我的POJO看起来像这样:
class Customer {
private String name;
...
public String getName() {
return name;
}
Run Code Online (Sandbox Code Playgroud)
现在,当用户从列表中选择客户时,我希望在标签中显示所选客户的名称.
显然我不能name直接绑定,因为它不是一个Property.(而且我不想String用StringProperty-objects 替换我的客户,因为SimpleStringProperty它不是serializable,我需要Customer通过RMI转移.)
我试着BeanPathAdapter从JFXtras(这看起来真的不错的方式)是这样的:
BeanPathAdapter<MultipleSelectionModel> customerBeanPathAdapter;
customerBeanPathAdapter = new BeanPathAdapter<>(lstCustomers.getSelectionModel());
customerBeanPathAdapter.bindBidirectional("selectedItem.name", lblCustomerName.textProperty());
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案只给我一个例外:
...
Caused by: java.lang.IllegalArgumentException: Unable to resolve accessor getSelectedItem
at jfxtras.labs.scene.control.BeanPathAdapter$FieldHandle.buildAccessor(BeanPathAdapter.java:3062)
at jfxtras.labs.scene.control.BeanPathAdapter$FieldHandle.buildAccessorWithLikelyPrefixes(BeanPathAdapter.java:3022)
at jfxtras.labs.scene.control.BeanPathAdapter$FieldHandle.updateMethodHandles(BeanPathAdapter.java:2986)
at jfxtras.labs.scene.control.BeanPathAdapter$FieldHandle.<init>(BeanPathAdapter.java:2977)
at jfxtras.labs.scene.control.BeanPathAdapter$FieldBean.performOperation(BeanPathAdapter.java:1348)
at jfxtras.labs.scene.control.BeanPathAdapter$FieldBean.performOperation(BeanPathAdapter.java:1186)
at jfxtras.labs.scene.control.BeanPathAdapter.bindBidirectional(BeanPathAdapter.java:567)
at jfxtras.labs.scene.control.BeanPathAdapter.bindBidirectional(BeanPathAdapter.java:369)
at at.gs1.sync.qm.client.gui.MainWindowController.initialize(MainWindowController.java:61)
... 22 more
Caused by: java.lang.IllegalAccessException: …Run Code Online (Sandbox Code Playgroud)