@@ -192,9 +192,15 @@ def map_java_to_class(project, logger=None):
192192 Map to/ compiled Java .class(es) to from/ .java source using Java fully
193193 qualified paths and indexing from/ .java files.
194194 """
195- project_files = project .codebaseresources .files ().no_status ()
195+ project_files = project .codebaseresources .files ()
196+ # Collect all files from "from_codebase", even if they already have a
197+ # status or are mapped. This is necessary because the deploy codebase
198+ # may contain sources that match "from_codebase" via checksum. If those
199+ # checksum-matched files are excluded from mapping, it can result in
200+ # .class files failing to resolve. See
201+ # https://github.com/aboutcode-org/scancode.io/issues/1854#issuecomment-3273472895
196202 from_resources = project_files .from_codebase ()
197- to_resources = project_files .to_codebase ().has_no_relation ()
203+ to_resources = project_files .to_codebase ().no_status (). has_no_relation ()
198204
199205 to_resources_dot_class = to_resources .filter (extension = ".class" )
200206 from_resources_dot_java = (
@@ -205,7 +211,6 @@ def map_java_to_class(project, logger=None):
205211 )
206212 to_resource_count = to_resources_dot_class .count ()
207213 from_resource_count = from_resources_dot_java .count ()
208-
209214 if not from_resource_count :
210215 logger ("No .java resources to map." )
211216 return
@@ -270,11 +275,7 @@ def find_java_packages(project, logger=None):
270275 Note: we use the same API as the ScanCode scans by design
271276 """
272277 from_java_resources = (
273- project .codebaseresources .files ()
274- .no_status ()
275- .from_codebase ()
276- .has_no_relation ()
277- .filter (extension = ".java" )
278+ project .codebaseresources .files ().from_codebase ().filter (extension = ".java" )
278279 )
279280
280281 if logger :
0 commit comments