Да, это возможно.
На самом деле это не красивый подход ...
Вы можете использовать папку под названием LIB и поставить банку Odbc я там, использовать относительный путь к LIB банку, как «Библиотека/jodbc.jar»
Вы можете встроить банку в папку с именем resource, после чего каждый раз, когда вы запускаете приложение, вы ищете папку lib/jodbc.jar, если не существует, вы можете создать папку и скопировать файл ресурсов внутри вашего приложения в папку и сделать.
Я использую этот подход в некоторых приложениях и отлично работал до сих пор. У меня была та же проблема, сложный для пользователя добавить classpath, поэтому я использую только «portable» jre и libs внутри своих приложений.
Извините, что не показывайте примеры, но я сейчас в классе.
Если вам нужно больше примеров, дайте мне знать, и в понедельник я могу ответить.
Cya.
Сначала вам нужно добавить lib в свой проект.
Если вы используете NetBeans, зайдите в свои свойства проекта, в свою библиотеку добавьте банку, но сначала поместите папку в папку проекта с именем lib и с вашим .jar, затем добавьте банку и выберите относительную дорожка.
Чтобы скопировать ресурс:
//Create the /lib directory with the .jars and the service.exe
//The resource_path is the package where are your files...
String resource_path = "br/com/myservice/resources/";
Util.copyResource(this.getClass().getClassLoader(), resource_path, "PAF_Service.exe", currentDirectory);
resource_path = resource_path + "lib/";
String directory_lib = currentDirectory + "lib/";
File dir_lib = new File(directory_lib);
if(!dir_lib.exists()){
dir_lib.mkdir();
}
Util.copyResource(this.getClass().getClassLoader(), resource_path, "ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar", directory_lib);
Util.copyResource(this.getClass().getClassLoader(), resource_path, "log4j-1.2.17.jar", directory_lib);
Util.copyResource(this.getClass().getClassLoader(), resource_path, "WinRun4J.jar", directory_lib);
Метод copyResource:
public static boolean copyResource(ClassLoader classLoader, String resource_path, String resource, String destiny){
FileOutputStream fos = null;
Boolean retorno = false;
try {
InputStream is = classLoader.getResourceAsStream(resource_path + resource);
if(is == null){
System.out.println("Resource not found! >> " + resource_path + resource);
retorno = false;
}
fos = new FileOutputStream(new File(destiny, resource));
byte[] buffer = new byte[1024];
int read = -1;
while((read = is.read(buffer)) != -1) {
fos.write(buffer,0,read);
}
fos.flush();
fos.close();
retorno = true;
} catch (FileNotFoundException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if(fos != null)
fos.close();
} catch (IOException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
}
return retorno;
}
Какой тип приложения. это? НАПРИМЕР. Веб-приложение, настольное приложение, приложение командной строки.? –
desktop app andrew –
См. Править для ответа. –