java web中的异常问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web中的异常问题相关的知识,希望对你有一定的参考价值。

String t = Thread.currentThread().getContextClassLoader().getResource("").getPath();
int num = t.indexOf(".metadata");
String path = t.substring(1, num).replace('/', '\\') + "Miluout\\WebContent\\image";
我用这三句语句去访问webcontent文件夹下的image文件夹中的图片,本地测试成功,但是我把web工程打包成war包后部署到云服务器的tomcat上去,却发现这个地址无效了,抛出异常,原先能显示的图片也不显示了。
我是小白,求问一下这是什么原因,应该怎么解决

这是算法异常了,没有正常抛出。是你的那个int b=1/0;引起的。
你可以用
try
int b=1/0;
catch (Exception e)
e.printStackTrace();


那你试下这样,System.out.println(b),我没估计错的话,程序会正常抛出错误的。可能是因为这个是属于运行时异常才没有正常捕捉到
参考技术A int num = t.indexOf(".metadata");

你在看看 应该是这里有问题。不知道为什么要这么做,但是如果没有以.metadata结尾 就会返回-1

这样截取字符串就直接报错了。本回答被提问者采纳
参考技术B 图片路径不对追问

怎么不对法,我在本地是测试能成功的,可以显示,打包放到云上就不行了,请问是不对在哪里,又应该怎么改

追答

java中的路径基本上都是绝对路径
可以alter一下你的图片路径看看与服务器上的路径是否一致

线程“主”java.lang.NoClassDefFoundError 中的异常:错误名称

【中文标题】线程“主”java.lang.NoClassDefFoundError 中的异常:错误名称【英文标题】:Exception in thread "main" java.lang.NoClassDefFoundError: wrong name 【发布时间】:2013-01-09 08:34:12 【问题描述】:

我的文件目录:

project/src/m2mcom/entities/AutomatedTelnetClient.java
           /web/Simple.java           
           /org/apache/commons/net/telnet/TelnetClient.java 

Simple.java的源代码:

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import java.util.*;
import java.io.*;

public class Simple 
    public static void main(String [] args) 
        try 
            AutomatedTelnetClient telnet = new AutomatedTelnetClient();
            String answer = telnet.request();
            System.out.println(answer);
         catch (Exception e) 
            System.err.println("Error");
        
    

当我执行 Simple.class 时,没有任何编译错误,我收到以下错误消息:

C:\Users\Victor\Desktop\project2\src\m2mcom\web>java Simple
Exception in thread "main" java.lang.NoClassDefFoundError: Simple (wrong name: m
2mcom/web/Simple)

有谁知道如何解决这个问题?

【问题讨论】:

看看这个链接你就会明白为什么你会得到这个错误以及如何在未来避免它javarevisited.blogspot.co.uk/2011/06/… 【参考方案1】:

您在错误的文件夹中使用错误的类名执行命令。运行 Java 类时需要使用完全限定名称 (FQN)。当然,您必须位于正确的目录中。在您的示例中,您的班级的 FQN 是 m2mcom.web.Simple(package m2mcom.websimple 名称 Simple 的组合)。

就推导正确的目录而言,你的类是存储在一个分层的文件夹结构中,基本上是从C:\Users\Victor\Desktop\project2\src开始的。

所以要正确执行你的程序,从C:\Users\Victor\Desktop\project2\src,做;

java m2mcom.web.Simple

【讨论】:

在运行 Java 类时需要使用完全限定名,而且您也在错误的文件夹中运行程序。 非常感谢 Perception 的清晰回答!【参考方案2】:
package m2mcom.web;

删除上面的行并重新编译它。 当您在 netbeans 中运行代码时,它包括在 m2mcom.web 包中。这不在您的类文件中。

【讨论】:

【参考方案3】:

因此,当您执行 java 命令时,您必须位于包名正上方的目录中,该命令的格式应为 packagename.classname,不带 .class 后缀。

【讨论】:

以上是关于java web中的异常问题的主要内容,如果未能解决你的问题,请参考以下文章

java 异常

线程“主”java.lang.NoClassDefFoundError 中的异常:错误名称

Java web项目集成Swagger报AbstractSerializableParameter类的异常问题

java中的异常处理问题??

java的异常和java web容器的异常

java.lang.NoSuchFieldError:在Tomcat上部署shiro时出现subjectDAO异常