Cómo funciona JustAnswer:
  • Preguntar a un Experto
    Los expertos tienen muchos conocimientos valiosos y están dispuestos a ayudar en cualquier pregunta. Credenciales confirmadas por una empresa de verificación perteneciente a Fortune 500.
  • Obtener una respuesta profesional
    Por correo electrónico, mensaje de texto o notificación mientras espera en su sitio.
    Haga preguntas de seguimiento si lo necesita.
  • Garantía de satisfacción plena
    Garantizamos tu satisfacción.
Formule su propia pregunta a Jose Mari
Jose Mari
Jose Mari, Grado Superior
Categoría: Informática
Clientes satisfechos: 526
Experiencia:  Técnico informático y Programador.
57600787
Escriba su pregunta sobre Informática aquí...
Jose Mari está en línea ahora

Mi PC tiene Windows 7 de 64 bits. Corro unos script java para

Pregunta del cliente

Mi PC tiene Windows 7 de 64 bits.
Corro unos script java para Ms Sql que si funcionan en 32 bits.
El error que obtengo en el log que genero es el siguiente:

Wed May 02 16:06:35 ACT 2012: The phase scriptProcessing failed. More Details: None
Wed May 02 16:06:35 ACT 2012: Stack Trace
Wed May 02 16:06:35 ACT 2012: java.lang.ProcessBuilder.start(ProcessBuilder.java:441)
Wed May 02 16:06:35 ACT 2012: java.lang.Runtime.exec(Runtime.java:593)
Wed May 02 16:06:35 ACT 2012: java.lang.Runtime.exec(Runtime.java:466)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.ScriptExecutionAssistant.executeJavaScript(ScriptExecutionAssistant.java:410)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.ScriptExecutionAssistant.executeScript(ScriptExecutionAssistant.java:352)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.ScriptExecutionAssistant.executeJQLScript(ScriptExecutionAssistant.java:225)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.ScriptExecutionAssistant.executeScript(ScriptExecutionAssistant.java:198)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.ScriptExecutionAssistant.runPreMigrationScripts(ScriptExecutionAssistant.java:173)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.DataTransferProcess.scriptProcessing(DataTransferProcess.java:660)
Wed May 02 16:06:35 ACT 2012: sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Wed May 02 16:06:35 ACT 2012: sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Wed May 02 16:06:35 ACT 2012: sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Wed May 02 16:06:35 ACT 2012: java.lang.reflect.Method.invoke(Method.java:597)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.DataTransferProcess.transferIt(DataTransferProcess.java:295)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.DataTransferProcess.start(DataTransferProcess.java:187)
Wed May 02 16:06:35 ACT 2012: com.lgc.dws.dt.DataTransferToolFrame$20.run(DataTransferToolFrame.java:619)

Tienen idea porque no funcionan en 64 bits?
Enviada: hace 5 año.
Categoría: Informática
Experto:  Jesús escribió hace 5 año.

Hola amigo/a! Muchas gracias XXXXX XXXXX en Just Answer!

 

Una duda, estos scripts los corre vía PHP?

Cliente: escribió hace 5 año.

Jesus:

 

Gracias XXXXX XXXXX contacto.

A tu pregunta te confirmo que no. El script en cuestión lo ejecuto por medio de un Package que se encuentra dentro de un script ".sql" que se ejecuta por línea de comando.

Adjunto el documento con el detalle del script.

Si necesitas mas detalles no dudes en solictarlo.

 

premigration_datum.sql:

 

package com

.lgc.dws.dt.script.java;public

class RDLAdjustor implements JqlScriptImpl {

public RDLAdjustor() {

}

public void run() {}

public void run(java.sql.Connection conn) {java

.sql.Statement stmt = null;java

.sql.Statement ustmt = null;java

.sql.ResultSet rs = null;java

.util.List<Object> entries = new java.util.Vector<Object>();

try {stmt

= conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);java

.lang.StringBuffer selectTable = new StringBuffer();selectTable

.append("SELECT");selectTable

.append(" table_name");selectTable

.append(", field_name");selectTable

.append(" FROM EDM_SA.FDD_DICT");selectTable

.append(" WHERE");selectTable

.append(" flags LIKE '%R%'");selectTable

.append(" ORDER BY");selectTable

.append(" table_name");selectTable

.append(", field_name");rs

= stmt.executeQuery(selectTable.toString());java

.lang.String tableName = "";java

.lang.String fieldName = "";

while (rs.next()) {tableName

= rs.getString(1);fieldName

= rs.getString(2);java

.util.List<Object> row = new java.util.Vector<Object>(2);row

.add(tableName);row

.add(fieldName);entries

.add(row);

}

} catch (java.sql.SQLException ex) {System

.out.println("get list crashed");System

.out.println(ex.getMessage());

} finally {

if (!(rs == null)) {try {rs.close();} catch (java.sql.SQLException ex) {}}

if (!(stmt == null)) {try {stmt.close();} catch (java.sql.SQLException ex) {}}

}

try {ustmt

= conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);java

.lang.String tableName = "";java

.lang.String fieldName = "";

for(java.util.Iterator iter = entries.iterator(); iter.hasNext(); ) {Object entry

= iter.next();java

.util.List row = (java.util.Vector) entry;tableName

= (String) row.get(0);fieldName

= (String) row.get(1);java

.lang.StringBuffer updateTable = new java.lang.StringBuffer();updateTable

.append("UPDATE EDM_SA.").append(tableName.toUpperCase());updateTable

.append(" SET ");updateTable

.append(fieldName.toLowerCase());updateTable

.append(" = ").append(fieldName.toLowerCase()).append(" - ");updateTable

.append(" (select X.datum_elev FROM EDM_SA.WELLIST X WHERE ").append("EDM_SA.").append(tableName.toUpperCase()).append(".i_key = X.i_key) ");

int rowcount = ustmt.executeUpdate(updateTable.toString());

}boolean isUpdateCommitted

= ustmt.execute("COMMIT");

} catch (java.sql.SQLException ex) {System

.out.println("update crashed");System

.out.println(ex.getMessage());

} finally {

if (!(ustmt == null)) {try {ustmt.close();} catch (java.sql.SQLException ex) {}}

}

}}

package com

.lgc.dws.dt.script.sql;

Cliente: escribió hace 5 año.
Este mismo Script en 32 bits funciona bien.
Experto:  Jesús escribió hace 5 año.
Ok, voy a investigar el log amigo, ahora le comento.
Experto:  Jose Mari escribió hace 5 año.
Buenos días,

Debo indicarle que todos los script que estén programados para 32 bits, debe volver a ser recompilados para la versión de 64 bits ya que de lo contrario no funcionan en sistemas de 64 bits.

Para cualquier tipo de aclaración o duda, por favor, póngase en contacto conmigo. si usted cree que la respuesta aportada es válida, por favor, marque la respuesta como aceptada.

Quedando a la espera de recibir noticias suyas, reciba un saludo,
Cliente: escribió hace 5 año.

Gracias José.

Disculpas por la demora en contestar pero estoy tratando de ver que esta sea la solución.

El proceso involucrado es complejo y debo verificar que realmente sea este el problema.

Ni bien lo confirme te confirmo o repregunto.

Experto:  Jose Mari escribió hace 5 año.
Buenos días,

Perfecto, quedo a la espera de recibir tu confirmación.

Recibe un saludo,
Cliente: escribió hace 5 año.

José:

Tu respuesta no fue la solución a mi problema. Recompilando los script tampoco se solucionaría. El problema real estaba en una clase del archivo ".Jar" de java. la clase con problemas la indica el Stack trace que adjunté:

"com.lgc.dws.dt.ScriptExecutionAssistant.executeJavaScript(ScriptExecutionAssistant.java:410)"

La clase ScriptExecutionAssistant.class tiene una porción de código en la cual por medio del método java "os.name" determina el sistema operativo que tiene la PC que está ejecutando el proceso. Evalua el resultado y de aceurdo a esto sigue un camino u otro. Cuando no encuentra en el resultado de esta variable, ninguna de los valores esperados, asume que el sistema es "Windows 95". Cómo el sistema "Windows 7" que es el de mi PC no está contemplado en la posibilidades, asume que es un Win95 y trata de ejecutar los script por línea de comando usando el "command.com" que es propio para Win95. Este es el verdadero origen del error. Aún compilando el mismo en 64 bits no soluciono nada. De hecho corrigiendo y compilando en 32 bits en 64 bits debería funcionar.

Agradezco tu tiempo.

Saludos,

Franco.

Experto:  Jose Mari escribió hace 5 año.
Buenas tardes Franco,

Siento que mis ayuda no haya sido válida por lo que entiendo que no desee marca la respuesta como correcta.

Reciba un saludo,