当运行我的springbootapp时,它在初始化后立即停止,没有错误. 我try 使用以下函数实现一个解决方案:

public static void waitForTermination() {
    try {
        // Wait indefinitely
        Object lock = new Object();
        synchronized (lock) {
            lock.wait();
        }
    } catch (InterruptedException e) {
        // Handle interruption if needed
        Thread.currentThread().interrupt();
    }
}

这阻止了它停止,然而,API本身没有响应任何请求, 此外,在判断过程本身时,它显示:

Tcp 127.0.0.1:53768 127.0.0.1:53767已建立11584

以下是主要的应用程序:

public class Main {
    public static void main(String[] args) {
        NovaOpt novaOpt = NovaOpt.GetInstance();

        SpringApplication springApplication = new SpringApplication(Main.class);
        springApplication.setDefaultProperties(Collections.singletonMap("server.port", "8090"));
        springApplication.run(args);

//        waitForTermination();


    }

    public static void waitForTermination() {
        try {
            // Wait indefinitely
            Object lock = new Object();
            synchronized (lock) {
                lock.wait();
            }
        } catch (InterruptedException e) {
            // Handle interruption if needed
            Thread.currentThread().interrupt();
        }
    }


}

下面是我创建的用于管理路由的Spring类:

package org.example;

import novj.publ.api.NovaOpt;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


    @RestController
    @RequestMapping("/api")

    public class Spring {
        NovaOpt novaOpt = NovaOpt.GetInstance();

        @GetMapping("/hello")
        public String sayHello() {
            return "Hello, World!";
        }

        @GetMapping("/GetScreenBrightness/{screenIp}")
        public String getScreenBrightness(@RequestParam("screenIp") String screenIp) {
            String username = System.getenv("USERNAME");
            String password = System.getenv("PASSWORD");
//        NovaHelper.fullLogin(novaOpt , username , password , screenIp);
            System.out.printf("Username:" + username);
            return "Hello";
        }


    }

这是我的build.gradle:

plugins {
    id 'java'
    id "org.springframework.boot" version "3.1.0"

}

group = 'org.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
    implementation files('src/NOVASDK/SDK/NovaSdk.jar')
    implementation files('src/Libs/gson-2.2.2.jar/gson-2.2.2.jar');

    implementation('org.springframework:spring-web:6.0.9')


    implementation platform('org.springframework.boot:spring-boot-dependencies:2.7.8')

    implementation 'org.springframework.boot:spring-boot-starter'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }

//    implementation 'org.springframework.boot:spring-boot-starter-web:latest.release'
}

test {
    useJUnitPlatform()
}

推荐答案

您的应用程序有两个地方有问题.

  1. 你少了@SpringBootApplication
  2. 您使用了错误的依赖项,并试图比Spring Boot更聪明(可能是因为缺少io.spring.dependency-management插件)
  3. (额外的)不是NovaOpt.GetInstance(),而是@Bean方法,这样你就可以把它注入你的控制器.
public class Main {

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(Main.class);
        springApplication.setDefaultProperties(Map.of("server.port", "8090"));
        springApplication.run(args);
    }

    @Bean
    NovaOpt novaOpt() {
      return NovaOpt.GetInstance();
    }
}
@RestController
@RequestMapping("/api")
public class Spring {
    
    private final NovaOpt novaOpt;
    
    public Spring(NovaOpt novaOpt) {
      this.novaOpt=novaOpt;
    }

    // Request handling methods

}

在Gradle文件中清除依赖项

plugins {
    id 'java'
    id "org.springframework.boot" version "3.1.0"
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'org.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation files('src/NOVASDK/SDK/NovaSdk.jar')

    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('com.google.code.gson:gson')
    testImplementation('org.springframework.boot:spring-boot-starter-test') 
}

test {
    useJUnitPlatform()
}

现在,您有了一个正确的Spring Boot应用程序类和适当的依赖项.

Java相关问答推荐

具有默认分支的JUnit代码覆盖率切换声明

Java WireMock定义存根在Cucumber并行执行的多线程测试中失败

如何粘合(合并)文件Lucene?

RxJava PublishSubject缓冲区元素超时

JavaFX Maven Assembly插件一直打包到错误的JDK版本

Java中如何根据Font.canDisplay方法对字符串进行分段

测试期间未执行开放重写方法

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

如何对多个字段进行分组和排序?

继续收到错误SQLJDBC EXCEPTION执行";org.springframework.dao.InvalidDataAccessResourceUsageException:&

虚拟线程应该很快消亡吗?

在VS代码中,如何启用Java Main函数的&Q;Run|DEBUG&Q;代码?

如何在JavaFX中制作鼠标透明stage

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

如何处理两个几乎相同的XSD文件?

泛型与泛型问题的完美解决方案?

Kotlin-仅替换字符串中最后一个给定的字符串

Java 17与Java 8双重表示法

使用StringBuilder和append方法创建字符串时Java字符串内部方法的问题

声纳覆盖范围为 0%,未生成 jacoco.xml