jdeps.1 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. '\" t
  2. .\" Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
  3. .\" Arch: generic
  4. .\" Software: JDK 8
  5. .\" Date: 21 November 2013
  6. .\" SectDesc: Basic Tools
  7. .\" Title: jdeps.1
  8. .\"
  9. .if n .pl 99999
  10. .TH jdeps 1 "21 November 2013" "JDK 8" "Basic Tools"
  11. .\" -----------------------------------------------------------------
  12. .\" * Define some portability stuff
  13. .\" -----------------------------------------------------------------
  14. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. .\" http://bugs.debian.org/507673
  16. .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
  17. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  18. .ie \n(.g .ds Aq \(aq
  19. .el .ds Aq '
  20. .\" -----------------------------------------------------------------
  21. .\" * set default formatting
  22. .\" -----------------------------------------------------------------
  23. .\" disable hyphenation
  24. .nh
  25. .\" disable justification (adjust text to left margin only)
  26. .ad l
  27. .\" -----------------------------------------------------------------
  28. .\" * MAIN CONTENT STARTS HERE *
  29. .\" -----------------------------------------------------------------
  30. .SH NAME
  31. jdeps \- Java class dependency analyzer\&.
  32. .SH SYNOPSIS
  33. .sp
  34. .nf
  35. \fBjdeps\fR [\fIoptions\fR] \fIclasses\fR \&.\&.\&.
  36. .fi
  37. .sp
  38. .TP
  39. \fIoptions\fR
  40. Command-line options\&. See Options\&.
  41. .TP
  42. \fIclasses\fR
  43. Name of the classes to analyze\&. You can specify a class that can be found in the class path, by its file name, a directory, or a JAR file\&.
  44. .SH DESCRIPTION
  45. The \fI\fR\f3jdeps\fR command shows the package-level or class-level dependencies of Java class files\&. The input class can be a path name to a \f3\&.class\fR file, a directory, a JAR file, or it can be a fully qualified class name to analyze all class files\&. The options determine the output\&. By default, \f3jdeps\fR outputs the dependencies to the system output\&. It can generate the dependencies in DOT language (see the \f3-dotoutput\fR option)\&.
  46. .SH OPTIONS
  47. .TP
  48. -dotoutput <\fIdir\fR>
  49. .br
  50. Destination directory for DOT file output\&. If specified, \f3jdeps\fR will generate one dot file per each analyzed archive named <\fIarchive-file-name\fR>\&.dot listing the dependencies, and also a summary file named summary\&.dot listing the dependencies among the archives\&.
  51. .TP
  52. -s, -summary
  53. .br
  54. Prints dependency summary only\&.
  55. .TP
  56. -v, -verbose
  57. .br
  58. Prints all class-level dependencies\&.
  59. .TP
  60. -verbose:package
  61. .br
  62. Prints package-level dependencies excluding dependencies within the same archive\&.
  63. .TP
  64. -verbose:class
  65. .br
  66. Prints class-level dependencies excluding dependencies within the same archive\&.
  67. .TP
  68. -cp <\fIpath\fR>, -classpath <\fIpath\fR>
  69. .br
  70. Specifies where to find class files\&.
  71. See also Setting the Class Path\&.
  72. .TP
  73. -p <\fIpkg name\fR>, -package <\fIpkg name\fR>
  74. .br
  75. Finds dependencies in the specified package\&. You can specify this option multiple times for different packages\&. The \f3-p\fR and \f3-e\fR options are mutually exclusive\&.
  76. .TP
  77. -e <\fIregex\fR>, -regex <\fIregex\fR>
  78. .br
  79. Finds dependencies in packages matching the specified regular expression pattern\&. The \f3-p\fR and \f3-e\fR options are mutually exclusive\&.
  80. .TP
  81. -include <\fIregex\fR>
  82. .br
  83. Restricts analysis to classes matching pattern\&. This option filters the list of classes to be analyzed\&. It can be used together with \f3-p\fR and \f3-e\fR which apply pattern to the dependencies\&.
  84. .TP
  85. -jdkinternals
  86. .br
  87. Finds class-level dependences in JDK internal APIs\&. By default, it analyzes all classes specified in the \f3-classpath\fR option and in input files unless you specified the \f3-include\fR option\&. You cannot use this option with the \f3-p\fR, \f3-e\fR, and \f3-s\fR options\&.
  88. \fIWarning\fR: JDK internal APIs may not be accessible in upcoming releases\&.
  89. .TP
  90. -P, -profile
  91. .br
  92. Shows profile or the file containing a package\&.
  93. .TP
  94. -apionly
  95. .br
  96. Restricts analysis to APIs, for example, dependences from the signature of \f3public\fR and \f3protected\fR members of public classes including field type, method parameter types, returned type, and checked exception types\&.
  97. .TP
  98. -R, -recursive
  99. .br
  100. Recursively traverses all dependencies\&.
  101. .TP
  102. -version
  103. .br
  104. Prints version information\&.
  105. .TP
  106. -h, -?, -help
  107. .br
  108. Prints help message for \f3jdeps\fR\&.
  109. .SH EXAMPLES
  110. Analyzing the dependencies of Notepad\&.jar\&.
  111. .sp
  112. .nf
  113. \f3$ jdeps demo/jfc/Notepad/Notepad\&.jar\fP
  114. .fi
  115. .nf
  116. \f3\fP
  117. .fi
  118. .nf
  119. \f3demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
  120. .fi
  121. .nf
  122. \f3 <unnamed> (Notepad\&.jar)\fP
  123. .fi
  124. .nf
  125. \f3 \-> java\&.awt \fP
  126. .fi
  127. .nf
  128. \f3 \-> java\&.awt\&.event \fP
  129. .fi
  130. .nf
  131. \f3 \-> java\&.beans \fP
  132. .fi
  133. .nf
  134. \f3 \-> java\&.io \fP
  135. .fi
  136. .nf
  137. \f3 \-> java\&.lang \fP
  138. .fi
  139. .nf
  140. \f3 \-> java\&.net \fP
  141. .fi
  142. .nf
  143. \f3 \-> java\&.util \fP
  144. .fi
  145. .nf
  146. \f3 \-> java\&.util\&.logging \fP
  147. .fi
  148. .nf
  149. \f3 \-> javax\&.swing \fP
  150. .fi
  151. .nf
  152. \f3 \-> javax\&.swing\&.border \fP
  153. .fi
  154. .nf
  155. \f3 \-> javax\&.swing\&.event \fP
  156. .fi
  157. .nf
  158. \f3 \-> javax\&.swing\&.text \fP
  159. .fi
  160. .nf
  161. \f3 \-> javax\&.swing\&.tree \fP
  162. .fi
  163. .nf
  164. \f3 \-> javax\&.swing\&.undo \fP
  165. .fi
  166. .nf
  167. \f3\fP
  168. .fi
  169. .sp
  170. Use -P or -profile option to show on which profile that Notepad depends\&.
  171. .sp
  172. .nf
  173. \f3$ jdeps \-profile demo/jfc/Notepad/Notepad\&.jar \fP
  174. .fi
  175. .nf
  176. \f3demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar (Full JRE)\fP
  177. .fi
  178. .nf
  179. \f3 <unnamed> (Notepad\&.jar)\fP
  180. .fi
  181. .nf
  182. \f3 \-> java\&.awt Full JRE\fP
  183. .fi
  184. .nf
  185. \f3 \-> java\&.awt\&.event Full JRE\fP
  186. .fi
  187. .nf
  188. \f3 \-> java\&.beans Full JRE\fP
  189. .fi
  190. .nf
  191. \f3 \-> java\&.io compact1\fP
  192. .fi
  193. .nf
  194. \f3 \-> java\&.lang compact1\fP
  195. .fi
  196. .nf
  197. \f3 \-> java\&.net compact1\fP
  198. .fi
  199. .nf
  200. \f3 \-> java\&.util compact1\fP
  201. .fi
  202. .nf
  203. \f3 \-> java\&.util\&.logging compact1\fP
  204. .fi
  205. .nf
  206. \f3 \-> javax\&.swing Full JRE\fP
  207. .fi
  208. .nf
  209. \f3 \-> javax\&.swing\&.border Full JRE\fP
  210. .fi
  211. .nf
  212. \f3 \-> javax\&.swing\&.event Full JRE\fP
  213. .fi
  214. .nf
  215. \f3 \-> javax\&.swing\&.text Full JRE\fP
  216. .fi
  217. .nf
  218. \f3 \-> javax\&.swing\&.tree Full JRE\fP
  219. .fi
  220. .nf
  221. \f3 \-> javax\&.swing\&.undo Full JRE\fP
  222. .fi
  223. .nf
  224. \f3\fP
  225. .fi
  226. .sp
  227. Analyzing the immediate dependencies of a specific class in a given classpath, for example the \f3com\&.sun\&.tools\&.jdeps\&.Main\fR class in the tools\&.jar file\&.
  228. .sp
  229. .nf
  230. \f3$ jdeps \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP
  231. .fi
  232. .nf
  233. \f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
  234. .fi
  235. .nf
  236. \f3 com\&.sun\&.tools\&.jdeps (tools\&.jar)\fP
  237. .fi
  238. .nf
  239. \f3 \-> java\&.io \fP
  240. .fi
  241. .nf
  242. \f3 \-> java\&.lang \fP
  243. .fi
  244. .nf
  245. \f3\fP
  246. .fi
  247. .sp
  248. Use the \f3-verbose:class\fR option to find class-level dependencies or use the \f3-v\fR or \f3-verbose\fR option to include dependencies from the same JAR file\&.
  249. .sp
  250. .nf
  251. \f3$ jdeps \-verbose:class \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP
  252. .fi
  253. .nf
  254. \f3\fP
  255. .fi
  256. .nf
  257. \f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
  258. .fi
  259. .nf
  260. \f3 com\&.sun\&.tools\&.jdeps\&.Main (tools\&.jar)\fP
  261. .fi
  262. .nf
  263. \f3 \-> java\&.io\&.PrintWriter \fP
  264. .fi
  265. .nf
  266. \f3 \-> java\&.lang\&.Exception \fP
  267. .fi
  268. .nf
  269. \f3 \-> java\&.lang\&.Object \fP
  270. .fi
  271. .nf
  272. \f3 \-> java\&.lang\&.String \fP
  273. .fi
  274. .nf
  275. \f3 \-> java\&.lang\&.System \fP
  276. .fi
  277. .nf
  278. \f3\fP
  279. .fi
  280. .sp
  281. Use the \f3-R\fR or \f3-recursive\fR option to analyze the transitive dependencies of the \f3com\&.sun\&.tools\&.jdeps\&.Main\fR class\&.
  282. .sp
  283. .nf
  284. \f3$ jdeps \-R \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP
  285. .fi
  286. .nf
  287. \f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
  288. .fi
  289. .nf
  290. \f3 com\&.sun\&.tools\&.classfile (tools\&.jar)\fP
  291. .fi
  292. .nf
  293. \f3 \-> java\&.io \fP
  294. .fi
  295. .nf
  296. \f3 \-> java\&.lang \fP
  297. .fi
  298. .nf
  299. \f3 \-> java\&.lang\&.reflect \fP
  300. .fi
  301. .nf
  302. \f3 \-> java\&.nio\&.charset \fP
  303. .fi
  304. .nf
  305. \f3 \-> java\&.nio\&.file \fP
  306. .fi
  307. .nf
  308. \f3 \-> java\&.util \fP
  309. .fi
  310. .nf
  311. \f3 \-> java\&.util\&.regex \fP
  312. .fi
  313. .nf
  314. \f3 com\&.sun\&.tools\&.jdeps (tools\&.jar)\fP
  315. .fi
  316. .nf
  317. \f3 \-> java\&.io \fP
  318. .fi
  319. .nf
  320. \f3 \-> java\&.lang \fP
  321. .fi
  322. .nf
  323. \f3 \-> java\&.nio\&.file \fP
  324. .fi
  325. .nf
  326. \f3 \-> java\&.nio\&.file\&.attribute \fP
  327. .fi
  328. .nf
  329. \f3 \-> java\&.text \fP
  330. .fi
  331. .nf
  332. \f3 \-> java\&.util \fP
  333. .fi
  334. .nf
  335. \f3 \-> java\&.util\&.jar \fP
  336. .fi
  337. .nf
  338. \f3 \-> java\&.util\&.regex \fP
  339. .fi
  340. .nf
  341. \f3 \-> java\&.util\&.zip \fP
  342. .fi
  343. .nf
  344. \f3/usr/java/jre/lib/jce\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
  345. .fi
  346. .nf
  347. \f3 javax\&.crypto (jce\&.jar)\fP
  348. .fi
  349. .nf
  350. \f3 \-> java\&.io \fP
  351. .fi
  352. .nf
  353. \f3 \-> java\&.lang \fP
  354. .fi
  355. .nf
  356. \f3 \-> java\&.lang\&.reflect \fP
  357. .fi
  358. .nf
  359. \f3 \-> java\&.net \fP
  360. .fi
  361. .nf
  362. \f3 \-> java\&.nio \fP
  363. .fi
  364. .nf
  365. \f3 \-> java\&.security \fP
  366. .fi
  367. .nf
  368. \f3 \-> java\&.security\&.cert \fP
  369. .fi
  370. .nf
  371. \f3 \-> java\&.security\&.spec \fP
  372. .fi
  373. .nf
  374. \f3 \-> java\&.util \fP
  375. .fi
  376. .nf
  377. \f3 \-> java\&.util\&.concurrent \fP
  378. .fi
  379. .nf
  380. \f3 \-> java\&.util\&.jar \fP
  381. .fi
  382. .nf
  383. \f3 \-> java\&.util\&.regex \fP
  384. .fi
  385. .nf
  386. \f3 \-> java\&.util\&.zip \fP
  387. .fi
  388. .nf
  389. \f3 \-> javax\&.security\&.auth \fP
  390. .fi
  391. .nf
  392. \f3 \-> sun\&.security\&.jca JDK internal API (rt\&.jar)\fP
  393. .fi
  394. .nf
  395. \f3 \-> sun\&.security\&.util JDK internal API (rt\&.jar)\fP
  396. .fi
  397. .nf
  398. \f3 javax\&.crypto\&.spec (jce\&.jar)\fP
  399. .fi
  400. .nf
  401. \f3 \-> java\&.lang \fP
  402. .fi
  403. .nf
  404. \f3 \-> java\&.security\&.spec \fP
  405. .fi
  406. .nf
  407. \f3 \-> java\&.util \fP
  408. .fi
  409. .nf
  410. \f3/usr/java/jre/lib/rt\&.jar \-> /usr/java/jre/lib/jce\&.jar\fP
  411. .fi
  412. .nf
  413. \f3 java\&.security (rt\&.jar)\fP
  414. .fi
  415. .nf
  416. \f3 \-> javax\&.crypto\fP
  417. .fi
  418. .nf
  419. \f3\fP
  420. .fi
  421. .sp
  422. Generate dot files of the dependencies of Notepad demo\&.
  423. .sp
  424. .nf
  425. \f3$ jdeps \-dotoutput dot demo/jfc/Notepad/Notepad\&.jar\fP
  426. .fi
  427. .nf
  428. \f3\fP
  429. .fi
  430. .sp
  431. \f3jdeps\fR will create one dot file for each given JAR file named <\fIfilename\fR>\&.dot in the dot directory specified in the \f3-dotoutput\fR option, and also a summary file named summary\&.dot that will list the dependencies among the JAR files
  432. .sp
  433. .nf
  434. \f3$ cat dot/Notepad\&.jar\&.dot \fP
  435. .fi
  436. .nf
  437. \f3digraph "Notepad\&.jar" {\fP
  438. .fi
  439. .nf
  440. \f3 // Path: demo/jfc/Notepad/Notepad\&.jar\fP
  441. .fi
  442. .nf
  443. \f3 "<unnamed>" \-> "java\&.awt";\fP
  444. .fi
  445. .nf
  446. \f3 "<unnamed>" \-> "java\&.awt\&.event";\fP
  447. .fi
  448. .nf
  449. \f3 "<unnamed>" \-> "java\&.beans";\fP
  450. .fi
  451. .nf
  452. \f3 "<unnamed>" \-> "java\&.io";\fP
  453. .fi
  454. .nf
  455. \f3 "<unnamed>" \-> "java\&.lang";\fP
  456. .fi
  457. .nf
  458. \f3 "<unnamed>" \-> "java\&.net";\fP
  459. .fi
  460. .nf
  461. \f3 "<unnamed>" \-> "java\&.util";\fP
  462. .fi
  463. .nf
  464. \f3 "<unnamed>" \-> "java\&.util\&.logging";\fP
  465. .fi
  466. .nf
  467. \f3 "<unnamed>" \-> "javax\&.swing";\fP
  468. .fi
  469. .nf
  470. \f3 "<unnamed>" \-> "javax\&.swing\&.border";\fP
  471. .fi
  472. .nf
  473. \f3 "<unnamed>" \-> "javax\&.swing\&.event";\fP
  474. .fi
  475. .nf
  476. \f3 "<unnamed>" \-> "javax\&.swing\&.text";\fP
  477. .fi
  478. .nf
  479. \f3 "<unnamed>" \-> "javax\&.swing\&.tree";\fP
  480. .fi
  481. .nf
  482. \f3 "<unnamed>" \-> "javax\&.swing\&.undo";\fP
  483. .fi
  484. .nf
  485. \f3}\fP
  486. .fi
  487. .nf
  488. \f3\fP
  489. .fi
  490. .nf
  491. \f3$ cat dot/summary\&.dot\fP
  492. .fi
  493. .nf
  494. \f3digraph "summary" {\fP
  495. .fi
  496. .nf
  497. \f3 "Notepad\&.jar" \-> "rt\&.jar";\fP
  498. .fi
  499. .nf
  500. \f3}\fP
  501. .fi
  502. .nf
  503. \f3\fP
  504. .fi
  505. .sp
  506. .SH SEE\ ALSO
  507. .TP 0.2i
  508. \(bu
  509. javap(1)
  510. .RE
  511. .br
  512. 'pl 8.5i
  513. 'bp