{"id":15016038,"url":"https://github.com/minecraftforge/jarcompatibilitychecker","last_synced_at":"2025-06-27T02:34:22.283Z","repository":{"id":39966974,"uuid":"493905972","full_name":"MinecraftForge/JarCompatibilityChecker","owner":"MinecraftForge","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-18T15:24:34.000Z","size":260,"stargazers_count":4,"open_issues_count":0,"forks_count":4,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-01-29T18:38:18.789Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MinecraftForge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-header.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"patreon":"LexManos"}},"created_at":"2022-05-19T03:24:05.000Z","updated_at":"2023-08-14T00:25:15.000Z","dependencies_parsed_at":"2024-03-18T17:00:21.655Z","dependency_job_id":null,"html_url":"https://github.com/MinecraftForge/JarCompatibilityChecker","commit_stats":{"total_commits":30,"total_committers":7,"mean_commits":4.285714285714286,"dds":"0.30000000000000004","last_synced_commit":"19bd85b87c8f00ca8de381694db03710d0219d4a"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinecraftForge%2FJarCompatibilityChecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinecraftForge%2FJarCompatibilityChecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinecraftForge%2FJarCompatibilityChecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinecraftForge%2FJarCompatibilityChecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MinecraftForge","download_url":"https://codeload.github.com/MinecraftForge/JarCompatibilityChecker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237152803,"owners_count":19263787,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-24T19:48:19.167Z","updated_at":"2025-02-04T16:31:13.440Z","avatar_url":"https://github.com/MinecraftForge.png","language":"Java","readme":"# JarCompatibilityChecker\n**JarCompatibilityChecker** (or **JCC** for short) is a tool written with Java 8 which reports API or binary incompatibilities between two JARs.\nThe JAR with the API or base code to be compared against is called the **base JAR**.\nThe input JAR to compare against the API or base for incompatibilities is called the **concrete JAR**.\n\nCompatibility modes:\n- **API** - Checks for compatibility between the public and protected members (API) of the base JAR and concrete JAR\n- **Binary** - Checks for binary compatibility between all members, both public and private, of the base JAR and concrete JAR\n\nIt is not a goal of this tool to check for source compatibility.\nBecause it operates on compiled class files located inside JARs, the tool only looks for incompatibilities that could cause exceptions and crashes at runtime.\nThis means that there may be changes between the base JAR and concrete JAR which cause a source incompatibility but are not reported by this tool as it is still compatible at runtime.\n\n## Usage\n```groovy\nrepositories {\n    maven {\n        name = 'MinecraftForge'\n        url = 'https://maven.minecraftforge.net/'\n    }\n}\n\ndependencies {\n    implementation 'net.minecraftforge:JarCompatibilityChecker:0.1.+'\n}\n```\n\nFor command-line usage, the `all` classifier JAR can be downloaded and used.\nFor usage from inside other libraries, the no-classifier JAR can be referenced through gradle.\nThe main entrypoint for other libraries is the `net.minecraftforge.jarcompatibilitychecker.JarCompatibilityChecker` class.\n\n## Note on Terminology\nJarCompatibilityChecker and the Java Language Specification have different meanings for binary compatibility.\nFor JarCompatibilityChecker, binary compatibility means that all members, both public and private, are compatible between the base JAR and concrete JAR.\nCompatible means that a member still exists in the concrete JAR, its type or parameters has not been changed, and its visibility has not been lowered.\nFor the Java Language Specification, binary compatibility means a new version of a JAR does not break other binaries depending on previous versions of that JAR.\nBinaries can normally only reference public and protected members of another JAR,\nso this definition of binary compatibility is more in line with JarCompatibilityChecker's definition of API compatibility.\n","funding_links":["https://patreon.com/LexManos"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminecraftforge%2Fjarcompatibilitychecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminecraftforge%2Fjarcompatibilitychecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminecraftforge%2Fjarcompatibilitychecker/lists"}