对于想了解getClassLoader().getResourceAsStream(resource)在java11中返回null的读者,本文将是一篇不可错过的文章,我们将详细介绍getclass返回
对于想了解getClassLoader().getResourceAsStream(resource) 在 java 11 中返回 null的读者,本文将是一篇不可错过的文章,我们将详细介绍getclass返回值,并且为您提供关于ApplicationContext 在使用 SpringRunner.class 运行的 SpringBootTest 中返回 null、Class.class.getResourceAsStream 在 eclipse 中返回 null 但在 jar 中工作、ClassLoader.getSystemClassLoader().getResourceAsStream() 在 Servlet 中返回 null?、context.getClass().getClassLoader().getResourceAsStream("test.xml")的有价值信息。
本文目录一览:- getClassLoader().getResourceAsStream(resource) 在 java 11 中返回 null(getclass返回值)
- ApplicationContext 在使用 SpringRunner.class 运行的 SpringBootTest 中返回 null
- Class.class.getResourceAsStream 在 eclipse 中返回 null 但在 jar 中工作
- ClassLoader.getSystemClassLoader().getResourceAsStream() 在 Servlet 中返回 null?
- context.getClass().getClassLoader().getResourceAsStream("test.xml")
getClassLoader().getResourceAsStream(resource) 在 java 11 中返回 null(getclass返回值)
如何解决getClassLoader().getResourceAsStream(resource) 在 java 11 中返回 null
我正在将 spring boot java 项目从 openshift-jdk-8 迁移到 openshift-jdk-11。在 openshift 云环境中将项目部署为 docker 映像时,在下面的 java-11 行中始终返回 null。相同的代码在 Windows/本地环境中运行时运行良好。
getClassLoader().getResourceAsstream("mapper/myfile.xml")
从 bean-io 依赖加载文件
implementation("org.beanio:beanio:2.1.0")
我在这个 jar 中的以下位置有文件。
BOOT-INF
--classes
--mapper/myfile.xml
低于错误
2021-03-10T10:39:27.555-05:00,severity=ERROR,thread=ForkJoinPool-10-worker-3,org.beanio.BeanIOConfigurationException: BeanIO mapping file ''mapper/myfile.xml'' not found on classpath
at org.beanio.StreamFactory.loadResource(StreamFactory.java:213) ~[beanio-2.1.0.jar!/:2.1.0]
at org.beanio.StreamFactory.loadResource(StreamFactory.java:198) ~[beanio-2.1.0.jar!/:2.1.0]
at com.payment.ene.xerox.domain.sortIndexHandler.<init>(SortIndexHandler.java:51) ~[gen-copy-dmz.120.jar!/:?]
at com.payment.ene.xerox.domain.exstream.PrintFloworchestratorImpl.lambda$printPrep$0(copyFloworchestratorImpl.java:100) ~[gen-copy-dmz.120.jar!/:?]
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448) [?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) [?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) [?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) [?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) [?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) [?:?]
解决此问题的任何建议
解决方法
你可以试试java.nio:
new String(Files.readAllBytes(Paths.get(absoluteFilePath)));
ApplicationContext 在使用 SpringRunner.class 运行的 SpringBootTest 中返回 null
如何解决ApplicationContext 在使用 SpringRunner.class 运行的 SpringBootTest 中返回 null
我在运行测试类时遇到问题。在我运行它后,它返回“org.springframework.beans.factory.NoUniqueBeanDeFinitionException: No qualifying bean of type ''t.c.i.s.se.Sfts'' available: expected single matching bean but found 2: sftsImpl,sfts
”这个异常。
这是我的测试课;
@RunWith(springrunner.class)
@SpringBoottest(classes = Sfta.class)
public class SftaTests {
@Autowired
ApplicationContext ac;
@Test
public void contextLoads() {
Sfts sfts= ac.getBean(Sfts.class);
assertTrue(Sfts instanceof SftsImpl);
}
}
我的其他课程就像;
public interface Sfts {
public void process();
}
@Service
@Component
public class SftsImpl implements Sfts {
@Autowired
private GlobalConfig globalConfig;
@Autowired
private Ftr ftr;
private Fc fc;
@Async
@Scheduled(initialDelayString = "${s.f.t.m}",fixedrateString = "${s.f.t.m}")
public void process() {
int hod = DateTime.Now().getHourOfDay();
if (hod != 6){
fc = new Fc(globalConfig,ftr);
fc.control();
}
}
}
为什么我在运行测试应用程序后出现错误?
解决方法
尝试从 SftsImpl bean 中删除 @Component 注释。 @Service 足以注册一个 bean。
此外,如果您只想测试您的 bean - 从 ApplicationContext 获取它可能不是最佳选择。 不使用 ApplicationContext 的单元测试代码示例:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Sfta.class)
public class SftaTests {
@Autowired
Sfts sfts;
@Test
public void testAsync() {
sfts.process();
// do assertions here
}
}
Class.class.getResourceAsStream 在 eclipse 中返回 null 但在 jar 中工作
如何解决Class.class.getResourceAsStream 在 eclipse 中返回 null 但在 jar 中工作
我正在开发一款 Java 游戏。我在另一台计算机上的 eclipse 中开始了我的项目,现在我将它从旧计算机上的 eclipse 导出,将其复制到我新计算机上的 eclipse 工作区,将其导入到 eclipse 中,还验证了我的所有属性都是两台计算机上的相同构建路径 java 版本 (SE 1.8) 等。现在我所有的 Class.class.getResourceAsstream 调用都返回 null。即使它在我的旧电脑上运行良好。
更具体地说,我有这个代码
InputStream in=Class.class.getResourceAsstream(file);
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
Where file="guis/guiVertexShader.txt"
所以我的问题是第 1 行在 eclipse 中返回 null,但是,如果我导出我的项目并将其放入一个 Fat jar 中,那么 LWJGL 2 的所有 jars/natives 都可以正常工作。同样在 eclipse 中,下面的工作
InputStream in=new FileInputStream(System.getProperty("user.dir")+"/src"+file);
虽然我知道我需要使用 getResourceAsstream 以便我可以导出到 jar。 有什么想法吗?
解决方法
我似乎已经修复了它,问题是我的新计算机上没有安装与 Java 1.8 兼容的 jre。一旦我安装了它(Java 8)并添加了 JRE 到 eclipse 它在 eclipse 和 Fat jar 中都运行良好
ClassLoader.getSystemClassLoader().getResourceAsStream() 在 Servlet 中返回 null?
如何解决ClassLoader.getSystemClassLoader().getResourceAsStream() 在 Servlet 中返回 null?
我的问题可能很模糊。让我详细说明一下。 我的项目目录结构(在 IntelliJ IDEA 中):
Server/--------------------------Module
src/
java/-----------------------------------classpath directory
com.example.demo/
HelloServlet.java ------a servlet respons
TestCode.java ------a servlet that responds to network requests
Utils.java ------a class to test by junit
resources/------------------------------classpath directory
hello.txt------------------------------------------ "hello word" writed in this file
在 Utils.java
中,我有以下代码:
public class Utils {
private static BufferedReader reader = null;
static{
try {
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsstream("hello.txt");
reader = new BufferedReader(new InputStreamReader(is));
} catch (Exception e) {
e.printstacktrace();
}
}
public static String getString() throws IOException {
return reader.readLine();
}
}
在TestCode.java
中:
public class TestCode {
@Test
public void test() throws IOException {
System.out.println(Utils.getString());
}
}
当我运行方法 test() 时,我得到以下控制台输出:
Hello World
这样就可以了,但是servlet出了点问题。
在 HelloServlet.java
中,我有以下代码:
@WebServlet(name = "helloServlet",value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
private String message;
public void init() {
message = "init() has invoked.";
}
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException {
response.setContentType("text/html");
//NullPointerException throws
message = Utils.getString();
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
}
public void destroy() {
}
}
当我在 doGet() 方法中调用 Utils.getString() 并通过 chrome 发送 GET 请求时,servlet 将抛出 NullPointerException。
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at com.example.demo.Utils.<clinit>(Utils.java:17)
at com.example.demo.HelloServlet.doGet(HelloServlet.java:20)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
但是,当我对 Utils.java
进行如下更改时:
private static BufferedReader reader = null;
static{
try {
//use getClassLoader() instead of getSystemClassLoader()
InputStream is = Utils.class.getClassLoader().getResourceAsstream("hello.txt");
reader = new BufferedReader(new InputStreamReader(is));
} catch (Exception e) {
e.printstacktrace();
}
}
public static String getString() throws IOException {
return reader.readLine();
}
然后我通过 chrome 发送一个 GET 请求。“Hello World”将打印在浏览器上。 当我刷新网站(或再次请求 servlet)时,会出现 null 打印的第二个问题。 为什么?有人可以回答我的问题吗?谢谢
解决方法
Apache Tomcat 8 使用多个类加载器:https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html。
如果您想让代码实现独立,请使用以下代码段:
classLoader = request.getSession().getServletContext().getClassLoader()
根据 JavaEE 文档,您将获得一种可靠的方法来获取“由此 ServletContext 表示的 Web 应用程序的类加载器”。
context.getClass().getClassLoader().getResourceAsStream("test.xml")
用context.getClass().getClassLoader().getResourceAsStream ("test.xml") 这个方法获取工程目录下的 test.xml 文件的内容,返回的 InputStream 为空,有可以解决的吗?
关于getClassLoader().getResourceAsStream(resource) 在 java 11 中返回 null和getclass返回值的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ApplicationContext 在使用 SpringRunner.class 运行的 SpringBootTest 中返回 null、Class.class.getResourceAsStream 在 eclipse 中返回 null 但在 jar 中工作、ClassLoader.getSystemClassLoader().getResourceAsStream() 在 Servlet 中返回 null?、context.getClass().getClassLoader().getResourceAsStream("test.xml")等相关知识的信息别忘了在本站进行查找喔。
本文标签: