I had to create JAVA SOURCES (CREATE OR REPLACE JAVA SOURCE NAMED...), and JAVA FUNCTIONS (create or replace function blabla RETURN NUMBER AS LANGUAGE JAVA NAME...). But they would not compile. The error was ORA-29548 Java system class reported: could not identify release specified in classes.bin
Searching for the cause, I realized that everything Java-related returned that ORA-29548 error. For instance:
create function get_java_property(prop in varchar2)
return varchar2 is
language java name 'java.lang.System.getProperty(java.lang.String) return java.lang.String';
select get_java_property('java.version') from dual;
returned the dreaded ORA-29548.
After quite a bit of googling, I found MOS note ID 2149046.1, which deals with that very issue. According to that note, in my case, the cause would be that when installing a Java-related PSU, the post-install action (typically, an sql script) was not run. I had applied a Java-related PSU to a number of Oracle Homes and databases a few weeks before, so I checked whether all the instalation and post_installation actions had been taken properly. It turns out that patch 21153423, which I applied to a number of ORACLE_HOMES, requires an sql script to be run in startup upgrade mode: