# Overview of python-javatools
A [python] module for unpacking and inspecting [Java] Class files,
JARs, and collections of either. Supporting features up to JDK 8.
[python]: http://python.org
[java]: http://www.oracle.com/technetwork/java/index.html
It can do deep checking of classes to perform comparisons of
functionality, and output reports in multiple formats.
* [python-javatools on GitHub][github]
* [python-javatools on PyPI][pypi]
[github]: https://github.com/obriencj/python-javatools/
[pypi]: http://pypi.python.org/pypi/javatools
If you have suggestions, please use the [issue tracker] on github. Or
heck, just fork it!
[issue tracker]: https://github.com/obriencj/python-javatools/issues
## Requirements
* [Python] 2.7, 3.7, 3.8, 3.9, 3.10, 3.11
* [Setuptools]
* [Six]
* [Cheetah3] is used in the generation of HTML reports
* [M2Crypto] (optional) is used for cryptographic operations
In addition, the following tools are used in building and testing the
project.
* [Tox]
* [GNU Make]
* [Flake8]
All of these packages are available in most linux distributions
(eg. Fedora), and for OSX via [MacPorts] and [HomeBrew], or available
directly from pip.
M2Crypto can be difficult on some platforms, and so is set as an
optional dependency. If an execution path attempts to perform an
action which requires M2Crypto (primarily Jar signing and Jar
signature verification), then a `CryptoDisabled` exception will be
raised, or a message will be printed to stdout explaining that the
feature is unavailable. See the [M2Crypto Install Guide] for
workarounds in your environment.
[six]: https://pypi.org/project/six/
[cheetah3]: http://www.cheetahtemplate.org
[pyxml]: http://www.python.org/community/sigs/current/xml-sig/
[M2Crypto]: https://gitlab.com/m2crypto/m2crypto/
[setuptools]: https://pypi.org/project/setuptools/
[gnu make]: http://www.gnu.org/software/make/
[flake8]: https://pypi.org/project/flake8/
[tox]: https://pypi.org/project/tox
[fedora]: http://fedoraproject.org
[macports]: http://www.macports.org
[homebrew]: https://brew.sh/
[M2Crypto Install Guide]: https://gitlab.com/m2crypto/m2crypto/-/blob/master/INSTALL.rst
## Building
This module uses [setuptools], so running the following will build the
project:
```python setup.py build```
to install, run:
```python -m pip install . --user```
### Testing
Tests are written as `unittest` test cases. If you'd like to run the tests,
simply invoke:
```python setup.py test```
or invoke tests across a wider range of platforms via ``tox``
### RPM
If you'd prefer to build an RPM, see the wiki entry for
[Building as an RPM].
[building as an rpm]: https://github.com/obriencj/python-javatools/wiki/Building-as-an-RPM
## Javatools Scripts
* classinfo - similar to the javap utility included with most
JVMs. Also does provides/requires tracking.
* classdiff - attempts to find differences between two Java class
files
* jarinfo - prints information about a JAR. Also does
provides/requires tracking.
* jardiff - prints the deltas between the contents of a JAR, and runs
classdiff on differing Java class files contained in the JARs
* jarutil - creates and signs JARs, verifies JAR signatures
* manifest - creates and queries JAR manifests
* distinfo - prints information about a mixed multi-jar/class
distribution, such as provides/requires lists.
* distdiff - attempts to find differences between two distributions,
deep-checking any JARs or Java class files found in either
directory.
## Additional References
* Oracle's Java Virtual Machine Specification
[Chapter 4 "The class File Format"][jvms-4]
* [Java Archive (JAR) Files][jars]
[jvms-4]: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html
[jars]: http://docs.oracle.com/javase/1.5.0/docs/guide/jar/index.html
## Contact
Author: Christopher O'Brien <obriencj@gmail.com>
If you're interested in my other projects, feel free to visit
[my blog].
[my blog]: http://obriencj.preoccupied.net/
Original Git Repository: <https://github.com/obriencj/python-javatools>
## License
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 3 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, see
<http://www.gnu.org/licenses/>.
Raw data
{
"_id": null,
"home_page": "https://github.com/obriencj/python-javatools",
"name": "javatools",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Christopher O'Brien",
"author_email": "obriencj@gmail.com",
"download_url": "",
"platform": "any",
"description": "\n# Overview of python-javatools\n\nA [python] module for unpacking and inspecting [Java] Class files,\nJARs, and collections of either. Supporting features up to JDK 8.\n\n[python]: http://python.org\n[java]: http://www.oracle.com/technetwork/java/index.html\n\nIt can do deep checking of classes to perform comparisons of\nfunctionality, and output reports in multiple formats.\n\n* [python-javatools on GitHub][github]\n* [python-javatools on PyPI][pypi]\n\n[github]: https://github.com/obriencj/python-javatools/\n[pypi]: http://pypi.python.org/pypi/javatools\n\nIf you have suggestions, please use the [issue tracker] on github. Or\nheck, just fork it!\n\n[issue tracker]: https://github.com/obriencj/python-javatools/issues\n\n\n## Requirements\n\n* [Python] 2.7, 3.7, 3.8, 3.9, 3.10, 3.11\n* [Setuptools]\n* [Six]\n* [Cheetah3] is used in the generation of HTML reports\n* [M2Crypto] (optional) is used for cryptographic operations\n\nIn addition, the following tools are used in building and testing the\nproject.\n\n* [Tox]\n* [GNU Make]\n* [Flake8]\n\nAll of these packages are available in most linux distributions\n(eg. Fedora), and for OSX via [MacPorts] and [HomeBrew], or available\ndirectly from pip.\n\nM2Crypto can be difficult on some platforms, and so is set as an\noptional dependency. If an execution path attempts to perform an\naction which requires M2Crypto (primarily Jar signing and Jar\nsignature verification), then a `CryptoDisabled` exception will be\nraised, or a message will be printed to stdout explaining that the\nfeature is unavailable. See the [M2Crypto Install Guide] for\nworkarounds in your environment.\n\n[six]: https://pypi.org/project/six/\n[cheetah3]: http://www.cheetahtemplate.org\n[pyxml]: http://www.python.org/community/sigs/current/xml-sig/\n[M2Crypto]: https://gitlab.com/m2crypto/m2crypto/\n\n[setuptools]: https://pypi.org/project/setuptools/\n[gnu make]: http://www.gnu.org/software/make/\n[flake8]: https://pypi.org/project/flake8/\n[tox]: https://pypi.org/project/tox\n\n[fedora]: http://fedoraproject.org\n[macports]: http://www.macports.org\n[homebrew]: https://brew.sh/\n\n[M2Crypto Install Guide]: https://gitlab.com/m2crypto/m2crypto/-/blob/master/INSTALL.rst\n\n\n## Building\n\nThis module uses [setuptools], so running the following will build the\nproject:\n\n```python setup.py build```\n\nto install, run:\n\n```python -m pip install . --user```\n\n\n### Testing\n\nTests are written as `unittest` test cases. If you'd like to run the tests,\nsimply invoke:\n\n```python setup.py test```\n\nor invoke tests across a wider range of platforms via ``tox``\n\n\n### RPM\n\nIf you'd prefer to build an RPM, see the wiki entry for\n[Building as an RPM].\n\n[building as an rpm]: https://github.com/obriencj/python-javatools/wiki/Building-as-an-RPM\n\n\n## Javatools Scripts\n\n* classinfo - similar to the javap utility included with most\n JVMs. Also does provides/requires tracking.\n\n* classdiff - attempts to find differences between two Java class\n files\n\n* jarinfo - prints information about a JAR. Also does\n provides/requires tracking.\n\n* jardiff - prints the deltas between the contents of a JAR, and runs\n classdiff on differing Java class files contained in the JARs\n\n* jarutil - creates and signs JARs, verifies JAR signatures\n\n* manifest - creates and queries JAR manifests\n\n* distinfo - prints information about a mixed multi-jar/class\n distribution, such as provides/requires lists.\n\n* distdiff - attempts to find differences between two distributions,\n deep-checking any JARs or Java class files found in either\n directory.\n\n\n## Additional References\n\n* Oracle's Java Virtual Machine Specification\n [Chapter 4 \"The class File Format\"][jvms-4]\n* [Java Archive (JAR) Files][jars]\n\n[jvms-4]: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html\n[jars]: http://docs.oracle.com/javase/1.5.0/docs/guide/jar/index.html\n\n\n## Contact\n\nAuthor: Christopher O'Brien <obriencj@gmail.com>\n\nIf you're interested in my other projects, feel free to visit\n[my blog].\n\n[my blog]: http://obriencj.preoccupied.net/\n\nOriginal Git Repository: <https://github.com/obriencj/python-javatools>\n\n\n## License\n\nThis library is free software; you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as\npublished by the Free Software Foundation; either version 3 of the\nLicense, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nLesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public\nLicense along with this library; if not, see\n<http://www.gnu.org/licenses/>.\n",
"bugtrack_url": null,
"license": "GNU Lesser General Public License v3 (LGPLv3)",
"summary": "Tools for working with Java class files and JARs",
"version": "1.6.0",
"project_urls": {
"Bug Reports": "https://github.com/obriencj/python-javatools/issues",
"Homepage": "https://github.com/obriencj/python-javatools",
"Source": "https://github.com/obriencj/python-javatools"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d43043d4ff45efdc7d261640fdff32833042cf34a4dd718c4eb36bea10a0a349",
"md5": "0125f83bddbfeb6f27659f9f3a7d578b",
"sha256": "f6c025260d06719e7b1c241112b5d779b87b324aecab4cf40dc37a77daed95c0"
},
"downloads": -1,
"filename": "javatools-1.6.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "0125f83bddbfeb6f27659f9f3a7d578b",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 159320,
"upload_time": "2023-07-27T18:22:19",
"upload_time_iso_8601": "2023-07-27T18:22:19.777056Z",
"url": "https://files.pythonhosted.org/packages/d4/30/43d4ff45efdc7d261640fdff32833042cf34a4dd718c4eb36bea10a0a349/javatools-1.6.0-py2-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "05e08b8b8c811be4e99c1be226065c5190dba703634ec75d185b8bbb6230eb4e",
"md5": "db66dd62e998c33a12b511e09fb511ab",
"sha256": "b92ac541baa10c623aeba50f3e2041781d80bbdaea2624e7d730a240b5f379df"
},
"downloads": -1,
"filename": "javatools-1.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "db66dd62e998c33a12b511e09fb511ab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 159333,
"upload_time": "2023-07-27T18:19:22",
"upload_time_iso_8601": "2023-07-27T18:19:22.419044Z",
"url": "https://files.pythonhosted.org/packages/05/e0/8b8b8c811be4e99c1be226065c5190dba703634ec75d185b8bbb6230eb4e/javatools-1.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-27 18:22:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "obriencj",
"github_project": "python-javatools",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "javatools"
}