Intellij IDEA用不良行为把我逼疯了:
我有一个(基于Gradle的)项目,有两个用Java编写的主要类,每个类都在自己的包中。
两者都使用JavaFX,因此需要一些特殊的“运行配置”。
配置是相同的,在这两种情况下(这将是很好的,不必处理一个巴洛克式复杂的文本框集,只是有一个属性值的文本描述,一个可以复制粘贴太,但我离题)
对于应用程序“HelloFX”,一切都运行得很好,但是对于应用程序“ImageView示例”,消息是在模块“JavaFXTrial.main”中找不到“类”包2。
Intellij IDEA(或者更确切地说,Gradle运行时?)被排除在外在一种情况下发现主类,但在另一种情况下不发现。
编译后,编译工作绝对完美:
JavaFxTrial/
├── build
│ ├── classes
│ │ └── java
│ │ └── main
│ │ ├── pack1
│ │ │ └── HelloFX.class
│ │ └── pack2
│ │ └── ImageViewExample.class
│ │
│ │
我也可以从命令行启动这个类。
所以这在命令行和Intellij IDEA中工作:
JAVA=/usr/local/java
IDEA_PROJECTS=$HOME/Development/idea_projects
$JAVA/jdk15_64_adopt/bin/java \
--module-path $JAVA/javafx/javafx-sdk-16/lib/ \
--add-modules javafx.controls \
-cp $IDEA_PROJECTS/JavaFxTrial/build/classes/java/main \
pack1.HelloFX
但这只是调用另一个类的main,在Intellij IDEA中不起作用:
JAVA=/usr/local/java
IDEA_PROJECTS=$HOME/Development/idea_projects
$JAVA/jdk15_64_adopt/bin/java \
--module-path $JAVA/javafx/javafx-sdk-16/lib/ \
--add-modules javafx.controls \
-cp $IDEA_PROJECTS/JavaFxTrial/build/classes/java/main \
pack2.ImageViewExample
肯定错过了什么,但是什么?
当右键单击“Run ImageViewExample.main()”(我认为这意味着“通过Gradle插件运行”)(“Run HelloFX.main()”会成功),你会得到以下消息:
JavaFX runtime components are missing, and are required to run this application
这和“找不到类”不太一样。
运行“with info”之后,Gradle插件运行命令行以启动“ImageViewExample”,该命令行将Gradle缓存的所有JavaFX JAR放在类路径上,而不是模块路径上,这显然会失败
Error: JavaFX runtime components are missing, and are required to run this application
这可能与此有关。。。
更新:但可能不会。
右键单击Run只是拼凑了一个运行配置,这显然是错误的...但是它至少找到了主类。
更新
通过添加模块路径修复由Intellij IDEA创建的运行配置,使运行配置工作,尽管故障运行配置和新(现在工作)运行配置在表面上看起来完全相似。
更新^3
即使在查看时。创意/工作空间。xml
项目的工作和非工作运行配置相同。。除了非工作的一个没有标记为临时的
<component name="RunManager" selected="Application.ImageViewExampleB">
<configuration name="HelloFX" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="pack1.HelloFX" />
<module name="JavaFxTrial.main" />
<option name="VM_PARAMETERS" value="--module-path /usr/local/java/javafx/javafx-sdk-16/lib/ --add-modules javafx.controls " />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="ImageViewExample" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="pack2.ImageViewExample " />
<module name="JavaFxTrial.main" />
<option name="VM_PARAMETERS" value="--module-path /usr/local/java/javafx/javafx-sdk-16/lib/ --add-modules javafx.controls" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="ImageViewExampleB" type="Application" factoryName="Application" temporary="true">
<option name="MAIN_CLASS_NAME" value="pack2.ImageViewExample" />
<module name="JavaFxTrial.main" />
<option name="VM_PARAMETERS" value="--module-path /usr/local/java/javafx/javafx-sdk-16/lib/ --add-modules javafx.controls" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="pack2.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="JavaFxTrial" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<html" target="_blank">option name="scriptParameters" value="--info" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list />
</option>
<option name="vmOptions" value="" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<method v="2" />
</configuration>
<list>
<item itemvalue="Application.ImageViewExample" />
<item itemvalue="Application.HelloFX" />
<item itemvalue="Application.ImageViewExampleB" />
<item itemvalue="Gradle.JavaFxTrial" />
</list>
<recent_temporary>
<list>
<item itemvalue="Application.ImageViewExampleB" />
<item itemvalue="Gradle.JavaFxTrial" />
<item itemvalue="Application.HelloFX" />
</list>
</recent_temporary>
</component>
此设置中的移动部件太多。不喜欢。
好吧
事实证明,构建和运行的小部件是空白敏感的...
如果你看一看工作区,这一点就很明显了。xml文件
<option name="MAIN_CLASS_NAME" value="pack2.ImageViewExample " />
这就是为什么XML不应该轻易地被当作配置语言而忽略的原因。
一个明显的迹象,如果你知道要寻找什么:
那很容易。
错误报告已提交给JetBrains。
问题内容: 我有一个Spring应用程序,我希望能够在配置之间进行切换,这取决于我是调试服务器还是服务器正在生产中。(配置的区别在于数据库位置。) 理想情况下,我想在启动时将命令行参数传递给我的Spring应用程序并设置应用程序配置。 我有两个单独的application.properties文件,一个带有生产值,另一个带有调试值。如何在两者之间切换? 问题答案: 您可以有3个属性文件,和。您可以
我们正在用JDK11测试编译。在我们的pom中。xml,我们依赖于xml API: 代码在JDK 8中编译得很好,但在JDK 11中会出现错误,因为xml API中的大多数类也在JDK 11中,并且会发生以下错误:包javax。xml。可以从多个模块访问解析器:未命名、java。xml 有没有办法进入pom。xml必须有条件地使用依赖项,如jdk11是否为。是否设置了编译属性?
问题内容: 我希望在上面。我尝试使用,但不起作用。 我已经试过这段代码: 问题答案: 您可以同时添加到div和创建 或者您可以使用,现在应该将其放置在 3D空间中, 而不要在平面中展平。 您也可以使用一些随机的像或 也可以,但是它们不好
我有以下xml文件结构: 我的目标是借助xslt文件生成html输出。在这样做的过程中,我想应用一个模板来指导根元素的子元素,该元素将标记的名称输出为标题1,其内容包含在 为了更容易理解我想要的是HTML输出的示例: 现在,我的尝试如下所示:http://pastebin.com/wKgSLbcE 但它不适用于
问题内容: 我经历了太多的代码,试图找出我做错了什么,但我却步履蹒跚,浪费时间。这将非常简单,但我无法弄清楚。 我正在开发一个Android应用程序,需要将2个微调器放在一个活动上。第二个微调器将根据第一个微调器上选择的条目进行填充。听起来很简单吧? 所以这就是我想做的。如果用户选择Mobile,则应显示中的内容,当用户选择Large business 时应运行,最后一个条目应调用。我得到的只是一
我有两个版本的oracle,oracle Database 11g Enterprise Edition 11.2.0.1.0版本-生产版和oracle Database 11.g Enterprise Edition版本11.2-0.3.0版本-64位生产版 我有这个sql: 它适用于11.2.0.1.0,但在11.2.0.3.0上,我收到此错误: 我能做些什么来解决这个问题? 感谢。