Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

735
Views
Error: no se pudo encontrar o cargar la clase principal org.h2.tools.RunScript

enter code here . Tengo mi aplicación web y h2database como contenedores acoplables. Tengo docker componer archivo yml todo listo. Ahora, necesito inicializar esta base de datos (h2database). Pero soy incapaz de hacerlo. Cuando entro en el contenedor docker h2database, veo docker-entrypoint-initdb.d/initdb.sh dentro de este initdb.sh, he agregado mi script

 #!/bin/bash java -cp h2-1.4.190.jar org.h2.tools.RunScript \ -script /App1/BasePl/sql-scripts/h2/common-scripts/BasePl-schema-h2.sql \ -url "jdbc:h2:http://localhost/code1/Demo2./BasePl"

pero cuando trato de ejecutar este initdb.sh usando el comando bash me da error: No se pudo encontrar o cargar la clase principal org.h2.tools.RunScript

Probé todas las combinaciones posibles de ruta de clase y también descargué diferentes carpetas zip de archivos jar h2 y también verifiqué el archivo RunScript en h2\src\main\org\h2\tools y está allí. Así que no entiendo cuál es el problema aquí.

 Error: Could not find or load main class org.h2.tools.RunScript

mi archivo Docker-compose.yml:

 version: '3' services: baseplapplication: build: context: . dockerfile: Dockerfile environment: BASEPL_HOME: "/usr/local/BASEPL" ports: - "882:8080" volumes: - basepl_data:/var/bio depends_on: - db links: - db db: image: "buildo/h2database" volumes: - ./dumps/init.sh:/docker-entrypoint-initdb.d/initdb.sh - h2data:/var/lib/h2database ports: - "8082:8082" volumes: basepl_data: h2data:

ahora el initdb se creará cuando ejecute el comando docker-compose y, por lo tanto, necesito ingresar al contenedor de la base de datos (db) a la ubicación de initdb.sh y luego colocar mi script #!/bin/bash java -cp h2-1.4 .190.jar org.h2.tools.RunScript \ -script /App1/BasePl/sql-scripts/h2/common-scripts/BasePl-schema-h2.sql \ -url "jdbc:h2: http://localhost/ código1/Demo2./BasePl " . ¿Cómo podría entonces poner mi archivo h2-1.4.190.jar que se encuentra en mi escritorio en esa ubicación dentro del contenedor de la base de datos (db)? Todo lo que quiero es llenar (inicializar) la base de datos de la ventana acoplable ejecutando un script contra ella durante la redacción de la ventana acoplable. Por favor, soy nuevo en Docker, así que ayúdenme.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Este error significa que Java no encontró h2-1.4.190.jar .

Primero, debe colocar h2-1.4.190.jar en la misma carpeta de initdb.sh , que es docker-entrypoint-initdb.d en su caso. Luego, en su Dockerfile , supongo que WORKDIR no es docker-entrypoint-initdb.d .

Luego, cuando java -cp h2-1.4.190.jar , intenta encontrar el jar en WORKDIR , no en docker-entrypoint-initdb.d . Por ejemplo, si WORKDIR es /root/ , intentará encontrar h2-1.4.190.jar en /root , no en la carpeta donde se almacena el script, por lo que no podrá encontrar el jar.

Para superar esto, puede cambiar WORKDIR en dockerfile, o simplemente agregar junto a init.db.sh :

 #!/bin/bash dir=$(dirname "$0") java -cp "$dir/h2-1.4.190.jar" org.h2.tools.RunScript \ -script /App1/BasePl/sql-scripts/h2/common-scripts/BasePl-schema-h2.sql \ -url "jdbc:h2:http://localhost/code1/Demo2./BasePl"

El dir=$(dirname "$0") asegurará que es la misma carpeta del script en ejecución actual, no la carpeta donde iniciar el script.

Además, puede usar el directorio absoluto para h2-1.4.190.jar , también está bien.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!