¿Cómo agregar un directorio a classpath en un perfil de ejecución de aplicación en IntelliJ IDEA?

206

Estoy tratando de agregar un directorio al classpath de un perfil de ejecución de la aplicación

Si anulo usando -cp x: target / classes en la configuración de VM, me sale el siguiente error:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

¿Alguna idea sobre cómo agregar un directorio al classpath para mi proyecto?

sal
fuente
1
No está claro para mí dónde intentas agregar eso. Desde la línea de comando IJ? O en las propiedades del proyecto?
Heiko Rupp
Relacionado: youtrack.jetbrains.net/issue/IDEA-160167
AlikElzin-kilaka

Respuestas:

270

En Intellij 13, parece que es ligeramente diferente de nuevo. Aquí están las instrucciones para Intellij 13:

  1. haga clic en la vista de Proyecto o destape haciendo clic en el botón "1: Proyecto" en el borde izquierdo de la ventana o presionando Alt + 1
  2. encuentre su proyecto o submódulo y haga clic en él para resaltarlo, luego presione F4 o haga clic con el botón derecho y elija "Abrir configuración de módulo" (en IntelliJ 14 se convirtió en F12)
  3. haga clic en la pestaña de dependencias
  4. Haga clic en el botón "+" a la derecha y seleccione "Frascos o directorios ..."
  5. Encuentra tu camino y haz clic en Aceptar
  6. En el cuadro de diálogo con "Elegir categorías del archivo seleccionado", elija Classes(incluso si son propiedades), presione OK y OK nuevamente
  7. Ahora puede ejecutar su aplicación y tendrá la ruta seleccionada en la ruta de clase
stivlo
fuente
2
Entonces, ¿cómo crearía para ejecutar configuraciones con dos directorios diferentes que deben estar presentes exclusivamente en uno pero no en el otro? En eclipse puede agregar / eliminar cualquier cosa a una configuración de inicio. ¿IntelliJ no es compatible con esto?
Καrτhικ
9
Está bastante claro que puede cambiar la ruta de clase de la configuración de ejecución cambiando la ruta de clase del módulo . Pero la pregunta exacta era "cómo agregar un directorio a classpath en un perfil de ejecución de aplicación ". Así que lo real fue dado por uaaquarius
Pavel Vyazankin
Gracias ! ¡Esto resolvió mi problema después de años de buscar!
JonasCz - Restablece a Monica
1
El paso 6 no viene para mí. Estoy en intellij 14. Tengo una carpeta llamada lib donde se encuentran mis archivos .jar. Al seleccionar la carpeta o jar solo se analizará la ruta en intellij. todavía no funciona
Takeru
@Takeru ¿Te diste cuenta de esto?
rosshamish
91

Parece que IntelliJ 11 ha cambiado el método, y la respuesta marcada ya no funciona para mí. En caso de que alguien más llegue aquí a través de un motor de búsqueda, así es como lo resolví en IntelliJ 11:

  1. Vaya a la Estructura del proyecto, haga clic en Módulos y haga clic en su Módulo
  2. Elija la pestaña "Dependencias"
  3. Haga clic en el botón "+" en el lado derecho y seleccione "Frascos o directorios ..."
  4. Agregue el directorio o directorios que desee (tenga en cuenta que puede realizar una selección múltiple) y haga clic en Aceptar
  5. En el cuadro de diálogo que aparece, seleccione "clases" y NO "directorio jar"
  6. Asegúrese de estar usando ese módulo en su objetivo de ejecución

Tenga en cuenta que el paso 5 parece ser la diferencia clave. Si selecciona "directorio jar", se verá exactamente igual en el IDE pero no incluirá la ruta en tiempo de ejecución. Parece que no hay forma de determinar si ha seleccionado previamente "clases" o "directorio jar" después del hecho.

samkass
fuente
44
Muchas gracias por publicar esto. Me acabas de salvar una hora más o menos.
John Jiang
Tengo el mismo problema que antes con IJ11 y estaba feliz de encontrar una respuesta esperándome esta vez.
Sal
Perfecto. Mismo proceso para IJ12. Me encontré con esta publicación al intentar resolver 'java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver' Esto resolvió el problema de conexión. Gracias
jkmurphy1
66
No entiendo el paso 5 :( El diálogo simplemente no aparece.
Charles Wood
1
@CharlesWood: cuando quería seleccionar dos carpetas con una de ellas conteniendo subcarpetas. Tuve que expandir la que contenía subcarpetas a través del pequeño símbolo de flecha al lado del nombre de la carpeta para que apareciera el diálogo. De lo contrario, se omitiría el diálogo.
Timo Reimann
35

Puede probar la opción -Xbootclasspath / a: ruta del iniciador de aplicaciones java. Por descripción, especifica "una ruta separada por dos puntos de directivas, archivos JAR y archivos ZIP para agregar a la ruta de clase de rutina de carga predeterminada".

uaaquarius
fuente
2
Alguna documentación sobre cómo funciona -Xbootclasspath: docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018570
Lambart
3
Esta es una buena respuesta, ya que no requiere que cambie la configuración de su proyecto. De hecho, creo que responde mejor a la pregunta.
Chewy
1
Desafortunadamente, esto no funcionó para mí, ya que esto da como resultado que todas las clases cargadas desde ese classpath sean cargadas por el cargador de clases bootstrap, lo que rompe el código que supone que Xyz.class.getClassLoader () no es nulo.
Njol
@uaaquarius, ¿por qué no hay forma de editar la cadena de línea de comando directamente? Esto es frustrante.
Pacerier
@uaaquarius, ¿por qué si agrego mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarcomo dependencia usando el otro método en stackoverflow.com/a/16742141/632951 funciona, pero hacerlo usando -Xbootclasspath/ano lo hace?
Pacerier
19

Estoy usando Idea 8. en la pestaña de dependencias de su módulo (en el cuadro de diálogo de estructura del proyecto). Agregue una "Biblioteca de módulos". Allí puede seleccionar un directorio Jar para agregar. Luego, asegúrese de que el perfil de ejecución esté utilizando Classpath y JDK del módulo correcto cuando se ejecuta (esto se encuentra en el cuadro de diálogo de configuración de ejecución.

Mike Pone
fuente
11

Establezca "Opciones de VM" como: "-cp $ Classpath $; your_classpath"

Opciones de VM

zoirs
fuente
Esto me salvó el día.
Bruno Ranschaert
2

Suponga que solo necesita x: target / classes en su classpath. Luego simplemente agrega esta carpeta a tu classpath y% IDEA% \ lib \ idea_rt.jar. Ahora funcionará. Eso es.

Oleksandr Bondarenko
fuente
44
La pregunta es ¿cómo agrega esta carpeta a su classpath en IDEA?
Pacerier
0

No necesita especificar la carpeta de clases. Intellij debería poder cargarlo. Obtendrá este error si "Salida del compilador del proyecto" está en blanco.

Solo asegúrese de que se establezca el valor siguiente: Configuración del proyecto -> Proyecto -> Salida del compilador del proyecto a su carpeta de proyectoDir / out

VNN456
fuente