Eu tenho o seguinte em um arquivo java (MyRtmpClient.java):
import org.apache.mina.common.ByteBuffer;
e ByteBuffer
está dentro de um arquivo JAR (com a estrutura de diretórios adequada, é claro). Esse arquivo jar e outros que eu preciso estão no mesmo diretório que o arquivo .java.
Então eu compilo com a linha:
javac -cp ".;*.jar" MyRtmpClient.java
Mas eu recebo o erro:
MyRtmpClient.java:3: package org.apache.mina.common does not exist
import org.apache.mina.common.ByteBuffer;
Como posso include arquivos jar no meu projeto?
sua linha de comando está correta, mas há algumas considerações:
Eu estou supondo que o arquivo JAR tem a estrutura de diretórios adequada como você afirmou.
O javac não entende * .jar no argumento classpath. Você precisa especificar explicitamente cada jar. por exemplo
javac -cp ".;mina.jar" MyRtmpClient.java
No seu caso, acho que o JAVAC não conseguiu encontrar o arquivo do jars.
Tente por favor:
PROJECT_PATH
– lib \ a.jar
– src \ package \ b.java
cd @PROJECT_PATH javac -classpath lib\a.jar src\package\b.java
Em javac JDK 6 e acima Você poderia usar ( note falta de. Jar ):
javac -cp ".;*" MyRtmpClient.java
para citar javac – compilador de linguagem de programação Java
Como uma conveniência especial, um elemento de caminho de class contendo um nome de base de * é considerado equivalente à especificação de uma lista de todos os arquivos no diretório com a extensão .jar ou .JAR.
Por exemplo, se o diretório foo contiver a.jar e b.JAR, o elemento de caminho de class foo / * será expandido para A.jar; b.JAR, exceto que a ordem dos arquivos jar não é especificada. Todos os arquivos jar no diretório especificado, mesmo os ocultos, são incluídos na lista. Uma input de caminho de class que consiste simplesmente em * é expandida para uma lista de todos os arquivos jar no diretório atual.
Se você tiver utilitários à sua disposição (por exemplo, você está trabalhando com o Linux), você poderia fazer:
javac -cp .:`find * -name "*.jar" | tr "\n" ":"` MyRtmpClient.java
Todos os arquivos jar no diretório atual e todos os seus subdiretórios serão adicionados (o comando shell lista todos os arquivos jar e coloca os dois pontos como separadores entre eles).
Explicação:
find * -name "*.jar"
localiza e lista todos os arquivos jar na hierarquia cuja raiz é a pasta atual, find
à input do próximo comando, tr "\n" ":"
substitui todos os caracteres de nova linha por caracteres de dois pontos . Provavelmente abaixo da syntax funcionará no comando windows dos
javac -cp ".;first.jar;second.jar;third.jar" MyRtmpClient.java
No Java 8, as opções “.; *” Etc., mencionadas acima, parecem não funcionar. Eu tentei e descobri que: javac -cp '
trabalho:
pode ser / usr / local / classs / * ou / home / developer / MyProject / *
tente include o arquivo jar em sua linha de comando para:
javac MyRtmpClient.java ByteBuffer.jar
Você não pode usar -cp
com o Javac . Você tem que usar -classpath
(assumindo que as outras configurações estejam corretas).