首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.base/sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:75) in SpringApplication的java.lang.NullPointerException

java.base/sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:75) in SpringApplication的java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2022-03-09 06:06:13
回答 2查看 357关注 0票数 1

我在npe分公司的github有一个春季数据机场项目.

application.properties

代码语言:javascript
运行
复制
aerospike.host=localhost
aerospike.port=3000
aerospike.namespace=test
aerospike.timeout=125
os.name=Linux
line.separator=\n

春季ApplicationContext

代码语言:javascript
运行
复制
mport com.aerospike.demo.simplespringbootaerospikedemo.repositories.AerospikeUserRepository;
import com.aerospike.client.Host;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.aerospike.config.AbstractAerospikeDataConfiguration;
import org.springframework.data.aerospike.repository.config.EnableAerospikeRepositories;
import java.util.Collection;
import java.util.Collections;

@Configuration
@EnableConfigurationProperties(AerospikeConfigurationProperties.class)
@EnableAerospikeRepositories(basePackageClasses = AerospikeUserRepository.class)
public class AerospikeConfiguration extends AbstractAerospikeDataConfiguration {
  @Autowired
  private AerospikeConfigurationProperties aerospikeConfigurationProperties;
  @Override
  protected Collection<Host> getHosts() {
    return Collections.singleton(new Host(aerospikeConfigurationProperties.getHost(), aerospikeConfigurationProperties.getPort()));
  }
  @Override
  protected String nameSpace() {
    return aerospikeConfigurationProperties.getNamespace();
  }
}

主要的应用程序是-

代码语言:javascript
运行
复制
import com.aerospike.demo.simplespringbootaerospikedemo.configuration.AerospikeConfiguration;
import com.aerospike.demo.simplespringbootaerospikedemo.objects.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.aerospike.core.AerospikeTemplate;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.stream.Stream;
import org.joda.time.DateTime;

public class TestSpringConfig {
  public static void main(String[] args) throws IOException {
    System.out.println(ClassLoader.getSystemResourceAsStream("application.properties").available());

    Properties props = new Properties();
    InputStream resourceAsStream =  ClassLoader.getSystemResourceAsStream("application.properties");
    if (resourceAsStream != null) {
      props.load(resourceAsStream);
    }
    if(props != null) {
      System.setProperties(props);
    }
    try {
      ApplicationContext ctx = new AnnotationConfigApplicationContext(AerospikeConfiguration.class);
      AerospikeTemplate template = ctx.getBean(AerospikeTemplate.class);
      template.save(new User(123, "","", 12, DateTime.now().plusSeconds(60).getMillis()));
    } catch (Exception e) {
      StackTraceElement[] st = e.getStackTrace();
      Stream.of(st).forEach(System.out::println);
    } catch (ExceptionInInitializerError e) {
      System.out.println(e.getCause());
      e.getCause().printStackTrace();
    }
  }
}

当我运行主应用程序时,我会出现以下错误-

java.base/sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:75),java.base/sun.nio.fs.UnixPath.(UnixPath.java:69),java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279),java.base/java.io.FilePermission.(FilePermission.java:207),java.base/sun.security.provider.PolicyFile.getKnownPermission(PolicyFile.java:886),java.base/sun.security.provider.PolicyFile.getInstance(PolicyFile.java:836)在java.base/sun.security.provider.PolicyFile.addGrantEntry(PolicyFile.java:735) at java.base/sun.security.provider.PolicyFile.initDefaultPolicy(PolicyFile.java:491) at java.base/sun.security.provider.PolicyFile$2.run(PolicyFile.java:338) at java.base/sun.security.provider.PolicyFile$2.run(PolicyFile.java:335) at java.base/java.security.AccessController.doPrivileged(Native方法)java.base/sun.security.Provider.PolicyFile。java.base/sun.security.provider.PolicyFile.init(PolicyFile.java:328),java.base/sun.security.provider.PolicyFile.(PolicyFile.java:281),java.base/java.security.Policy.loadPolicyProvider(Policy.java:207),java.base/java.security.Policy.getPolicyNoCheck(Policy.java:178),java.base/java.security.ProtectionDomain.implies(ProtectionDomain.java:321),java.base/java.security.ProtectionDomain.impliesWithAltFilePerm(ProtectionDomain( java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:450) at java.base/java.security.AccessController.checkPermission(AccessController.java:897) at ch.qos.logback.core.util.Loader$1.run(Loader.java:48) at ch.qos.logback.core.util.Loader$1.run(Loader.java:45) at java.base/java.security.AccessController.doPrivileged(Native Method))在ch.qos.logback.classic.util.ContextInitializer.findURLOfDefaultConfigurationFile(ContextInitializer.java:109) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:138) at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84) at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:55) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417)在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362) at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130) at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59) at org.springframework.context.support.AbstractApplicationContext.(AbstractApplicationContext.java:178) at org.springframework.context.support.GenericApplicationContext.( org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext.java:67) at org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext.java:91) at com.aerospike.demo.simplespringbootaerospikedemo.TestSpringConfig.main(TestSpringConfig.java:27) )

知道怎么纠正这个错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-10 14:31:33

您为了“自动”AerospikeTemplate bean而尝试实现的解决方案不起作用,并导致NPE的出现。在静态main()方法中,有几种方法可以“自动更新”一个bean (在本例中是AerospikeTemplate bean),下面是一个关于这个场景的StackOverFlow问题:如何使用来自main(String[] args)方法的自动处理(@ autowired )引用?

但主要的问题是你想要实现什么?传统的使用Spring Data Aerospike存储库/模板的方法是在服务(也是bean)中自动调用存储库/模板,然后从控制器/测试/不同服务等方面调用服务方法。大多数Spring应用程序不包括静态main()方法中的逻辑--这是可以完成的,但没有多大意义。

票数 3
EN

Stack Overflow用户

发布于 2022-03-16 01:08:15

要自动引导AerospikeTemplate,需要在main方法中设置Spring应用程序(请查看示例这里):

代码语言:javascript
运行
复制
@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}

}

然后你可以在任何你需要的地方自动驾驶AerospikeTemplate

如果您正在使用Spring开发控制台应用程序,我建议使用org.springframework.boot.CommandLineRunner。例如:

代码语言:javascript
运行
复制
@Component
public class CommandLineRunnerImpl implements CommandLineRunner {

@Autowired
AerospikeTemplate template;

@Override
public void run(String... args) throws Exception {
    template.save(new User(123, "","", 12, DateTime.now().plusSeconds(60).getMillis()));
}
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71404987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档