mysql sources.jar_【JAVA】.jar与sources.jar浅谈~~么么哒

关于.jar与sources.jar到底是什么,区别是什么,我为大家讲解一下。

首先,当我们在下载jar包与引入jar包的时候可能会发现,存在jar文件与相应的cources jar文件。如下图所示:

378d5628ff69e9e0b703f103c89175e2.png

这个时候,到底该下载哪一个,或者我们需要的是哪一个。是junit-4.7.jar还是junit-4.7-sources.jar?

明确的告诉你,我们需要的是junit-4.7.jar,也就是我们需要在项目中引入的是junit-4.7.jar。

那这个source.jar有什么用呢?

我们知道,我们在项目中引入外部jar文件,肯定是要用到这个jar文件里面的类库才引入的,虽然我们只需要能引入进来,完成我们需要的功能即可,但有时候,我们还是想看看功能具体的实现,看看别人的源码是怎么写的。这个时候我们打开jar包。

e6205d0ff1c2013f704c6d5efa8d957b.png

比如,打开mysql-connector-java-5.1.5-bin.jar。

打开com.mysql.jdbc这个包。

发现里面都是编译后的class文件。

这种文件是看不到源码的(当然,你可以选择反编译)

打开第一个class文件,

c032086a270718ad474cc466266e1646.png

info-detail-1014158.html

如果,我们想看源码怎么办,这个时候就需要点击Attach Source.关联源码。

源码在哪里,没错,就在对应的source.jar里面。

Attach  Source完了以后,就可以直接看jar包中的类的源码了,是不是整个世界都明亮了。

Attach Source的过程很简单,相信大家可以自己完成。

本文作者:我是一个不太会讲故事的人

新浪微博:我不管你姓什么

微博地址:http://weibo.com/neveryu

支付宝:neveryu@vip.qq.com

由于本人水平有限,如有错误的地方请私信指正我,谢谢-->>

推荐微博:彻底被毕业的婷婷快捷入口:

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2023-06-02 23:12:37 WARN NativeCodeLoader:60 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Traceback (most recent call last): File "mysqlTest.py", line 12, in <module> jdbcDF=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/sparktest?useSSL=false").option("driver","com.mysql.cj.jdbc.Driver").option("dbtable","employee").option("user", "root").option("password", "123456").load() File "/usr/local/spark/python/pyspark/sql/readwriter.py", line 172, in load return self._df(self._jreader.load()) File "/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__ File "/usr/local/spark/python/pyspark/sql/utils.py", line 63, in deco return f(*a, **kw) File "/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py", line 328, in get_return_value py4j.protocol.Py4JJavaError: An error occurred while calling o31.load. : java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.apache.spark.sql.execution.datasources.jdbc.DriverRegistry$.register(DriverRegistry.scala:45) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$5.apply(JDBCOptions.scala:99) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$5.apply(JDBCOptions.scala:99) at scala.Option.foreach(Option.scala:257) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:99) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:35) at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:32) at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) at py4j.Gateway.invoke(Gateway.java:282) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:238) at java.lang.Thread.run(Thread.java:748)
最新发布
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值