Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
JDEPRSCAN(1)			 JDK Commands			  JDEPRSCAN(1)

NAME
       jdeprscan  -  static analysis tool that scans a jar file	(or some other
       aggregation of class files) for uses of deprecated API elements

SYNOPSIS
       jdeprscan [options] {dir|jar|class}

       options
	      See Options for the jdeprscan Command

       dir|jar|class
	      jdeprscan	command	scans each argument for	usages	of  deprecated
	      APIs.  The arguments can be a:

	      o	dir: Directory

	      o	jar: JAR file

	      o	class: Class name or class file

	      The  class  name should use a dot	(.) as a separator.  For exam-
	      ple:

	      java.lang.Thread

	      For nested classes, the dollar sign $ separator character	should
	      be used.	For example:

	      java.lang.Thread$State

	      A	class file can also be named.  For example:

	      build/classes/java/lang/Thread$State.class

DESCRIPTION
       The  jdeprscan  tool is a static	analysis tool provided by the JDK that
       scans a JAR file	or some	other aggregation of class files for  uses  of
       deprecated  API	elements.   The	deprecated APIs	identified by the jde-
       prscan tool are only those that are defined  by	Java  SE.   Deprecated
       APIs defined by third-party libraries aren't reported.

       To  scan	a JAR file or a	set of class files, you	must first ensure that
       all of the classes that the scanned classes depend upon are present  in
       the  class  path.  Set the class	path using the --class-path option de-
       scribed in Options for the jdeprscan Command.  Typically, you would use
       the same	class path as the one that you use when	invoking your applica-
       tion.

       If the jdeprscan	can't find all the dependent classes, it will generate
       an  error  message for each class that's	missing.  These	error messages
       are typically of	the form:

	      error: cannot find class ...

       If these	errors occur, then you must adjust the class path so  that  it
       includes	all dependent classes.

OPTIONS	FOR THE	JDEPRSCAN COMMAND
       The following options are available:

       --class-path path
	      Provides a search	path for resolution of dependent classes.

	      path  can	be a search path that consists of one or more directo-
	      ries separated by	the system-specific path separator.  For exam-
	      ple:

	      o	Oracle Solaris,	Linux, and OS X:

		       --class-path /some/directory:/another/different/dir

	      Note:

	      On  Windows,  use	 a semicolon (;) as the	separator instead of a
	      colon (:).

	      o	Windows:

		       --class-path \some\directory;\another\different\dir

       --for-removal
	      Limits scanning or listing to APIs that are deprecated  for  re-
	      moval.  Can't be used with a release value of 6, 7, or 8.

       --full-version
	      Prints out the full version string of the	tool.

       --help or -h
	      Prints out a full	help message.

       --list or -l
	      Prints  the  set of deprecated APIs.  No scanning	is done, so no
	      directory, jar, or class arguments should	be provided.

       --release 6|7|8|9
	      Specifies	the Java SE release that provides the set of deprecat-
	      ed APIs for scanning.

       --verbose or -v
	      Enables additional message output	during processing.

       --version
	      Prints out the abbreviated version string	of the tool.

EXAMPLE	OF JDEPRSCAN OUTPUT
       The  JAR	 file for this library will be named something similar to com-
       mons-math3-3.6.1.jar.  To scan this JAR file for	the use	of  deprecated
       APIs, run the following command:

	      jdeprscan	commons-math3-3.6.1.jar

       This  command  produces several lines of	output.	 For example, one line
       of output might be:

	      class org/apache/commons/math3/util/MathUtils uses deprecated method java/lang/Double::<init>(D)V

       Note:

       The class name is specified using the slash-separated  binary  name  as
       described  in  JVMS  4.2.1.   This is the form used internally in class
       files.

       The deprecated API it uses is a method on the java.lang.Double class.

       The name	of the deprecated method is <init>, which is  a	 special  name
       that  means that	the method is actually a constructor.  Another special
       name is <clinit>, which indicates a class static	initializer.

       Other methods are listed	just by	 their	method	name.	Following  the
       method name is the argument list	and return type:

	      (D)V

       This  indicates	that  it takes just one	double value (a	primitive) and
       returns void.  The argument and return types can	become	cryptic.   For
       example,	another	line of	output might be:

	      class org/apache/commons/math3/util/Precision uses deprecated method java/math/BigDecimal::setScale(II)Ljava/math/BigDecimal;

       In  this	 line  of  output,  the	 deprecated  method  is	 on  class ja-
       va.math.BigDecimal, and the method is setScale().  In  this  case,  the
       (II) means that it takes	two int	arguments.  The	Ljava/math/BigDecimal;
       after the  parentheses  means  that  it	returns	 a  reference  to  ja-
       va.math.BigDecimal.

JDEPRSCAN ANALYSIS CAN BE VERSION-SPECIFIC
       You can use jdeprscan relative to the previous three JDK	releases.  For
       example,	if you are running JDK 9, then you can check against JDK 8, 7,
       and 6.

       As an example, look at this code	snippet:

	      public class Deprecations	{
		 SecurityManager sm = new RMISecurityManager();	   // deprecated in 8
		 Boolean b2 = new Boolean(true);	  // deprecated	in 9
	      }

       The complete class compiles without warnings in JDK 7.

       If you run jdeprscan on a system	with JDK 9, then you see:

	      $	jdeprscan --class-path classes --release 7 example.Deprecations
	      (no output)

       Run jdeprscan with a release value of 8:

	      $	jdeprscan --class-path classes --release 8 example.Deprecations
	      class example/Deprecations uses type java/rmi/RMISecurityManager deprecated
	      class example/Deprecations uses method in	type java/rmi/RMISecurityManager deprecated

       Run jdeprscan on	JDK 9:

	      $	jdeprscan --class-path classes example.Deprecations
	      class example/Deprecations uses type java/rmi/RMISecurityManager deprecated
	      class example/Deprecations uses method in	type java/rmi/RMISecurityManager deprecated
	      class example/Deprecations uses method java/lang/Boolean <init> (Z)V deprecated

JDK 13				     2018			  JDEPRSCAN(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS FOR THE JDEPRSCAN COMMAND | EXAMPLE OF JDEPRSCAN OUTPUT | JDEPRSCAN ANALYSIS CAN BE VERSION-SPECIFIC

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=jdeprscan&sektion=1&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help