Java程序运行时出现Unknown Source,该怎么解决啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序运行时出现Unknown Source,该怎么解决啊?相关的知识,希望对你有一定的参考价值。

java.lang.ClassNotFoundException: com.mysql.aa.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Unknown Source)
at tools.JDBCUtils.getConnection(JDBCUtils.java:12)
at dao.AdminDao1.queryAllData(AdminDao1.java:19)
at test.TestDao1.main(TestDao1.java:12)
null
java.lang.ClassNotFoundException: com.mysql.aa.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Unknown Source)
at tools.JDBCUtils.getConnection(JDBCUtils.java:12)
at dao.AdminDao1.queryAllData(AdminDao1.java:19)
at test.TestDao1.main(TestDao1.java:14)
Exception in thread "main" java.lang.NullPointerException
at test.TestDao1.main(TestDao1.java:15)

Unknown Source就是未知bai的源文件du。

原因是:class文件中没有源文件的相关调试信息。在用zhijavac命令进行编译的时候没有指dao定调试信息。Java中的动态代理类的接口参数的类型不是一个普通的数组,而是类型为Class<?>[] interfaces,这里参考JDK文档中java.lang.reflect.Proxy。
解决方法:

在不确定时,先做判断,判断msg中是否含有“:”,然后使用substring(int arg0)。

String msg = fromServer.readUTF(); 

int m1 = 0;

String msgnew= new String();

if(msg.contains( ":"))

m1 = msg.indexOf( ":");

msgnew = new String(msg.substring(m1));

追问

没怎么看懂,能详细的说一下吗?

参考技术A 你这个是MySQL驱动注册失败啊,看看你的资源包是否放对位置了噢....
意思就是找不到你的MySQL驱动jar包,找不到里面的类,懂?
参考技术B 你的数据库驱动包是否放错了,com.mysql.aa.Driver,找一找有么有这个类

Mybatis操作数据时出现:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'

这个错误比较重要,而且很常见,故单独进行说明:

 Mybatis出现:Unknown column \'xxx\' in \'field list\'

先来看一下程序的内部:

dao.addUser("ll111", "ll11");// 添加用户l main函数测试
//添加用户 成功1 失败0
    public int addUser(String userPhoneNumber, String userPassword) throws IOException {
        //用户的 手机号,姓名(默认手机号),密码
        User user = new User(userPhoneNumber, userPhoneNumber, userPassword);
        int result = mapper.addUser(user);

        System.out.println(result);

        sqlSession.commit();
        return result;
    }
<!--    添加用户-->
    <insert id="addUser" parameterType="main.pojo.User">
        INSERT INTO user(user_phone_number, user_name, user_password)
        VALUES (${userPhoneNumber}, ${userName}, \'${userPassword}\');
    </insert>

 

 

 错误原因:本身来说,三个字段都属于String类型,但是在使用Mybatis时由于用法的错误,致使出现上图的结果,即本来手机号和名字想作为字符串插入,但是xml里却当成了字段名。如果是整数还好,String可以解析整数并且转化为字符串,但是像字母和数字混合,编译器就无法识别。

本质上来说,是Mybatis使用上的错误,不熟悉,理解其实现机理所致。同样的问题,也会出现在其他语句中,所以在实现时注意数据传输的类型!!!

解决方法:也如上图xml代码所示,password的变量使用单引号括住,即可表示为字符串,所以实际上,应该这样写:

<!--    添加用户-->
    <insert id="addUser" parameterType="main.pojo.User">
        INSERT INTO user(user_phone_number, user_name, user_password)
        VALUES (\'${userPhoneNumber}\', \'${userName}\', \'${userPassword}\');
    </insert>

 或者进行参数化表示:

<insert id="addUser" parameterType="main.pojo.User">
        INSERT INTO user(user_phone_number, user_name, user_password)
        VALUES (#{userPhoneNumber}, #{userName}, #{userPassword});
    </insert>

这种情况下,VALUES内容为 VALUES(?,?,?) ,数据传入时自动进行数据类型识别并填充,则没有以上报错。

 

以上是关于Java程序运行时出现Unknown Source,该怎么解决啊?的主要内容,如果未能解决你的问题,请参考以下文章

使用AUX_RGBImageRec = auxDIBImageLoad(L"***.bmp") 载入贴图,运行时出现 unknown dib file format

项目运行时出现java.sql.SQLException: Server configuration denies access to data source错误!

java做 pdf转换成图片 时出现Unknown CMap: UniGB-UCS2-H?急~

连接使用Ably.io创建连接时出现Unknown错误

解决方案-Genymotion 首次安装登陆时出现generic unknown error

解决方案-Genymotion 首次安装登陆时出现generic unknown error