我创建了一个项目,需要一个 tomcat 服务器来托管一个小网站。现在我想向该项目添加一个 JavaFX 应用程序。这也应该在 Tomcat 启动时启动,但不幸的是没有任何反应。FX 已添加到项目库中。
public class Start {
public static void main( String args[] )
{
try {
Tomcat tomcat = new Tomcat( );
String webappDirectory = new File( "src/main/webapp" ).getAbsolutePath( );
tomcat.setPort( 8080 );
Context context = tomcat.addWebapp( "", webappDirectory );
Tomcat.addServlet( context, "blockchain", new ServletContainer( new Applications( ) ) );
context.addServletMappingDecoded( "/blockchain/api/*", "blockchain" );
tomcat.start( );
tomcat.getServer( ).await( );
ConfigurationGui config = new ConfigurationGui();
Stage stage = new Stage();
config.start(stage);
}
catch ( Exception …Run Code Online (Sandbox Code Playgroud) 我创建了一个小型的客户端-服务器程序,其工作原理如下:客户端在五秒内向服务器发送一个随机数,然后服务器发送一个(或多或少出名的)报价给客户端。该随机数表示某些引号所在的 ServerClass 中 ArrayList 的索引。连接运行良好,客户收到报价,我可以轻松地使用 sysout 将其打印出来。我现在的问题是,我想在一个小的 JavaFX / FXML 文件中将收到的报价显示为标签,并且当从服务器传入新报价时,文本应该每五秒更改一次。QuotesClient 类(即客户端)也是相应 FXML 文件的控制器,但问题是因为我的 Client 类中负责处理传入 UDP 数据包的方法是静态的,当然我无法访问非静态在此方法中进行标记。
我也尝试将标签设为静态,但随后我收到一个 NullPointerException:
java.lang.NullPointerException
at Aufgabe1.QuotesClient.main(QuotesClient.java:48)
at Aufgabe1.QuotesApp.lambda$1(QuotesApp.java:32)
at java.base/java.lang.Thread.run(Thread.java:844)
Run Code Online (Sandbox Code Playgroud)
这是我的客户端文件:
public class QuotesClient {
private static final int BUFSIZE = 508;
@FXML
private static Label zitatLabel; //Thats the quoteLabel i wanna change
public static void main(String[] args) throws UnknownHostException {
var host = "localhost";
var localPort = 40000;
var serverPort = 50000;
try (var socket = new DatagramSocket(localPort)) {
while(true) {
Random …Run Code Online (Sandbox Code Playgroud)