{"id":635,"date":"2026-03-31T12:23:54","date_gmt":"2026-03-31T15:23:54","guid":{"rendered":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/?p=635"},"modified":"2026-04-01T11:06:27","modified_gmt":"2026-04-01T14:06:27","slug":"errores-de-compilacion-java-al-migrar-reportes-a-pdf-de-gx9-a-gx18","status":"publish","type":"post","link":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/?p=635","title":{"rendered":"Errores de compilaci\u00f3n Java al migrar Reportes a PDF (de GX9 a GX18)"},"content":{"rendered":"<h1 data-path-to-node=\"3\">Gu\u00eda de Resoluci\u00f3n: Errores de compilaci\u00f3n Java al migrar Reportes a PDF (de GX9 a GX18)<\/h1>\n<h2 data-path-to-node=\"4\">1. El Problema: S\u00edntomas y Errores Comunes<\/h2>\n<p data-path-to-node=\"5\">Durante la migraci\u00f3n de sistemas legacy (GX9) a la versi\u00f3n GX18, espec\u00edficamente al transformar viejos objetos <code data-path-to-node=\"5\" data-index-in-node=\"111\">Report<\/code> en <code data-path-to-node=\"5\" data-index-in-node=\"121\">Procedures<\/code> que generan PDFs, el compilador de Java puede arrojar errores que bloquean el <i data-path-to-node=\"5\" data-index-in-node=\"210\">Build<\/i>.<\/p>\n<p data-path-to-node=\"6\">Los dos errores m\u00e1s comunes que van a encontrar en el <i data-path-to-node=\"6\" data-index-in-node=\"54\">Output<\/i> son:<\/p>\n<p data-path-to-node=\"7\"><b data-path-to-node=\"7\" data-index-in-node=\"0\">Error A: Clases Duplicadas<\/b><\/p>\n<div class=\"code-block ng-tns-c281931504-41 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahcKEwj8tsm-5syTAxUAAAAAHQAAAAAQSw\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c281931504-41 ng-star-inserted\">\n<div class=\"buttons ng-tns-c281931504-41 ng-star-inserted\">\u00a0<\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c281931504-41\">\n<div class=\"animated-opacity ng-tns-c281931504-41\">\n<pre class=\"ng-tns-c281931504-41\"><code class=\"code-container formatted ng-tns-c281931504-41\" role=\"text\" data-test-id=\"code-content\">error: duplicate class: com.gesrec.rcheq_plan_pag__datastore1\r\nfinal  class rcheq_plan_pag__datastore1 extends DataStoreHelperBase implements ILocalDataStoreHelper\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"9\"><b data-path-to-node=\"9\" data-index-in-node=\"0\">Error B: S\u00edmbolo \/ M\u00e9todo no encontrado (Fallo en la firma del Execute)<\/b><\/p>\n<div class=\"code-block ng-tns-c281931504-42 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahcKEwj8tsm-5syTAxUAAAAAHQAAAAAQTA\">\n<div class=\"formatted-code-block-internal-container ng-tns-c281931504-42\">\n<div class=\"animated-opacity ng-tns-c281931504-42\">\n<pre class=\"ng-tns-c281931504-42\"><code class=\"code-container formatted ng-tns-c281931504-42\" role=\"text\" data-test-id=\"code-content\">error: cannot find symbol\r\n                  new com.gesrec.rplapagcdo(remoteHandle, context).execute( GXv_int1, GXv_char2) ;\r\n                                                                  ^\r\n  symbol:   method execute(int[],String[])\r\n  location: class rplapagcdo\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 data-path-to-node=\"11\">2. \u00bfCu\u00e1ndo y por qu\u00e9 ocurre esto?<\/h2>\n<p data-path-to-node=\"12\">Estos errores ocurren cuando agarramos un reporte de GX9 y lo modificamos para que emita un PDF en GX18 (por ejemplo, cambi\u00e1ndole el <b data-path-to-node=\"12\" data-index-in-node=\"133\">Call Protocol<\/b> a <code data-path-to-node=\"12\" data-index-in-node=\"149\">HTTP<\/code>).<\/p>\n<p data-path-to-node=\"13\"><b data-path-to-node=\"13\" data-index-in-node=\"0\">El motivo t\u00e9cnico:<\/b> GeneXus guarda en su base de conocimiento (metadata) c\u00f3mo se comunican los objetos entre s\u00ed. Cuando cambiamos un reporte a generador de PDF, su estructura interna en Java cambia radicalmente. Sin embargo, los objetos que lo llaman (el <i data-path-to-node=\"13\" data-index-in-node=\"254\">Caller<\/i>, por ejemplo <code data-path-to-node=\"13\" data-index-in-node=\"274\">ptmpimpres<\/code>) a veces conservan en cach\u00e9 la &#8220;vieja&#8221; forma de llamarlo (la firma del m\u00e9todo <code data-path-to-node=\"13\" data-index-in-node=\"363\">execute<\/code>). Como el objeto llamado ahora es distinto, los par\u00e1metros (<code data-path-to-node=\"13\" data-index-in-node=\"431\">int[], String[]<\/code>) ya no coinciden con lo que espera el generador, provocando que se rompa el \u00e1rbol de dependencias o se dupliquen clases internas al intentar parchear el c\u00f3digo.<\/p>\n<h2 data-path-to-node=\"14\">3. La Soluci\u00f3n (Paso a Paso)<\/h2>\n<p data-path-to-node=\"15\">Para solucionar esto, debemos configurar el objeto correctamente en sus propiedades y forzar al generador de GeneXus a &#8220;olvidar&#8221; la metadata vieja, reconstruyendo los archivos f\u00edsicos (<code data-path-to-node=\"15\" data-index-in-node=\"185\">.java<\/code> y <code data-path-to-node=\"15\" data-index-in-node=\"193\">.class<\/code>) desde cero.<\/p>\n<p data-path-to-node=\"16\">Sigan estos pasos exactos:<\/p>\n<ol start=\"1\" data-path-to-node=\"17\">\n<li>\n<p data-path-to-node=\"17,0,0\"><b data-path-to-node=\"17,0,0\" data-index-in-node=\"0\">Aislar el Procedimiento:<\/b> Vayan a las propiedades del procedimiento problem\u00e1tico que genera el PDF (en este ejemplo, <code data-path-to-node=\"17,0,0\" data-index-in-node=\"116\">rplapagcdo<\/code>).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,1,0\"><b data-path-to-node=\"17,1,0\" data-index-in-node=\"0\">Configurar como Main (Permanente):<\/b> Cambien la propiedad <b data-path-to-node=\"17,1,0\" data-index-in-node=\"56\">Main Program<\/b> a <code data-path-to-node=\"17,1,0\" data-index-in-node=\"71\">True<\/code>. Al generar un PDF de esta manera, el objeto necesita ser un punto de entrada independiente.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,2,0\"><b data-path-to-node=\"17,2,0\" data-index-in-node=\"0\">Build Exclusivo:<\/b> Hagan click derecho sobre ese procedimiento y ejecuten <b data-path-to-node=\"17,2,0\" data-index-in-node=\"72\">Build With This Only<\/b>. (Esto lo genera de forma aislada, asegurando su nueva estructura).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,3,0\"><b data-path-to-node=\"17,3,0\" data-index-in-node=\"0\">Reconstruir Dependencias:<\/b> Ejecuten un <b data-path-to-node=\"17,3,0\" data-index-in-node=\"38\">Build All<\/b>.<\/p>\n<\/li>\n<\/ol>\n<h2 data-path-to-node=\"18\">4. \u00bfPor qu\u00e9 funciona esta soluci\u00f3n? (La L\u00f3gica interna)<\/h2>\n<p data-path-to-node=\"19\">Al cambiar un reporte tradicional a un generador de PDF (especialmente al usar HTTP), su naturaleza cambia: deja de ser una simple rutina interna y pasa a ser un punto de ejecuci\u00f3n aut\u00f3nomo.<\/p>\n<ul data-path-to-node=\"20\">\n<li>\n<p data-path-to-node=\"20,0,0\">Al ponerlo en <code data-path-to-node=\"20,0,0\" data-index-in-node=\"14\">Main Program = True<\/code> y hacer <i data-path-to-node=\"20,0,0\" data-index-in-node=\"42\">Build With This Only<\/i>, le confirmamos a GeneXus esta nueva naturaleza. El generador descarta cualquier rastro del viejo reporte de GX9 y reconstruye la clase Java de forma 100% independiente y con una estructura limpia.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"20,1,0\">Al hacer el <i data-path-to-node=\"20,1,0\" data-index-in-node=\"12\">Build All<\/i> posterior, le estamos diciendo al resto de la KB (incluyendo al objeto llamador): <i data-path-to-node=\"20,1,0\" data-index-in-node=\"104\">&#8220;Atenci\u00f3n, este objeto ahora es principal e independiente&#8221;<\/i>. Al reevaluar la llamada, GeneXus reescribe la l\u00ednea del <code data-path-to-node=\"20,1,0\" data-index-in-node=\"220\">.execute(...)<\/code> adapt\u00e1ndose a esta nueva arquitectura, lo que soluciona instant\u00e1neamente el error <code data-path-to-node=\"20,1,0\" data-index-in-node=\"316\">cannot find symbol<\/code> y limpia cualquier clase duplicada generada por la confusi\u00f3n previa.<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Gu\u00eda de Resoluci\u00f3n: Errores de compilaci\u00f3n Java al migrar Reportes a PDF (de GX9 a GX18) 1. El Problema: S\u00edntomas y Errores Comunes Durante la migraci\u00f3n de sistemas legacy (GX9) a la versi\u00f3n GX18, espec\u00edficamente al transformar viejos objetos Report en Procedures que generan PDFs, el compilador de Java puede arrojar errores que bloquean el [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":636,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-635","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docs"],"_links":{"self":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=635"}],"version-history":[{"count":1,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/635\/revisions"}],"predecessor-version":[{"id":637,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/635\/revisions\/637"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/media\/636"}],"wp:attachment":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}