ورود

View Full Version : مبتدی: اضافه کردن به کتابخانه



mhjbarnamenevis
دوشنبه 12 تیر 1396, 12:28 عصر
سلام
در اینترنت یک نفر به من گفت که از این سایت (https://ci.canoo.com/teamcity/viewLog.html?buildId=273521&buildTypeId=HtmlUnit_FastBuild&tab=artifacts)فایل zip را به کتابخانه ام اضافه کنم.
حالا من اضافه کرده ام ولی برنامه مشکل دارد و به import ها گیر می دهد.
من پیشتر با نسخه ی قبلی همین برنامه کار می کردم و import ها درست بود ولی آنجا از کتابخانه ای با پسوند jar استفاده می کردم نه zip.
حالا نمی دانم مشکل از من است و اشتباه وارد کرده ام؟ یا اینکه مشکل از آن طرف است و برنامه اش را خوب نساخته؟ (نسخه ی کامل نیست.)

من الان پرونده ی zip را هم دقیقا مانند پرونده ی jar اضافه می کنم به کتابخانه ام. این گونه:

https://vgy.me/NugqQ1.png
https://vgy.me/NugqQ1.png

آیا باید به گونه ای دیگر اضافه کنم؟ (مثلا از حالت zip در آورم و به عنوان source package وارد کنم؟)


========================

یک پرسش دیگر هم داشتم:
در بسیاری از سایت ها چندین گزینه برای دانلود قرار داده شده. مثلا همین:

https://vgy.me/2ykKLQ.png
https://vgy.me/2ykKLQ.png

الان اینها چه معنی ای می دهند؟
فرق bin با jar خالی با src با sources چیست؟ (text و javadoc که معلوم است.)

آیا همه ی اینها را می توان به عنوان کتابخانه استفاده کرد؟

vahid-p
سه شنبه 13 تیر 1396, 00:28 صبح
احتمالا مشکل از محتوای فایل zip هست. وگرنه در کل فایل zip مشکلی ندارد.
از آنجایی که فایل zip شما از عنوان bin در نام فایل استفاده کرده منظورش این است محتوا مربوط به کدهای دودویی برای اجرا است (یعنی این فایل کامپایل شده است)
پس این مناسب نیست. javadoc همان مستندات کتابخانه است که در مورد کلاس ها و متدها توضیح می دهد. داشتن این فایل ضروری نیست ولی برای راهنمایی مفید است.
sourceیا src به منظور کدهای کامپایل نشده هستند و شما به کدهای این کتابخانه دسترسی دارید. اینجا متوجه نشدم چرا دو فایل مجزا هستند و حجمشان خیلی متفاوت است.
اما کتابخانه ای که کد آن توسط کامپایلر جاوا کامپایل شده فایل .jar است (ممکن است .zip هم باشد ولی معمولا .jar است یا در فایل زیپ انواع jarها وجود داشته باشد). فایل jar همان آرشیو (مانند zip) است اما با نام اختصاصی برای فایل های جاوا و معمولا نه همیشه یا حاوی سورس کد است، یا مستندات و یا فایلهای .class که کامپایل شده .java هستند و قابل اجرا توسط jvm. به هر حال وجود کتابخانه htmlunit-2.28-SNAPSHOT.jar برای اجرا درست برنامه شما کفایت می کند.
پس به جای bin.zip از آخرین فایل استفاده کنید و به پروژه اضافه کنید.

mhjbarnamenevis
سه شنبه 13 تیر 1396, 02:59 صبح
احتمالا مشکل از محتوای فایل zip هست. وگرنه در کل فایل zip مشکلی ندارد.
از آنجایی که فایل zip شما از عنوان bin در نام فایل استفاده کرده منظورش این است محتوا مربوط به کدهای دودویی برای اجرا است (یعنی این فایل کامپایل شده است)
پس این مناسب نیست. javadoc همان مستندات کتابخانه است که در مورد کلاس ها و متدها توضیح می دهد. داشتن این فایل ضروری نیست ولی برای راهنمایی مفید است.
sourceیا src به منظور کدهای کامپایل نشده هستند و شما به کدهای این کتابخانه دسترسی دارید. اینجا متوجه نشدم چرا دو فایل مجزا هستند و حجمشان خیلی متفاوت است.
اما کتابخانه ای که کد آن توسط کامپایلر جاوا کامپایل شده فایل .jar است (ممکن است .zip هم باشد ولی معمولا .jar است یا در فایل زیپ انواع jarها وجود داشته باشد). فایل jar همان آرشیو (مانند zip) است اما با نام اختصاصی برای فایل های جاوا و معمولا نه همیشه یا حاوی سورس کد است، یا مستندات و یا فایلهای .class که کامپایل شده .java هستند و قابل اجرا توسط jvm. به هر حال وجود کتابخانه htmlunit-2.28-SNAPSHOT.jar برای اجرا درست برنامه شما کفایت می کند.
پس به جای bin.zip از آخرین فایل استفاده کنید و به پروژه اضافه کنید.

سلام و عرض ادب وحید عزیز،
یادم می آید پیش تر هم من در این انجمن پرسش کرده بودم و شما راهنمایی کرده بودید. باز هم متشکرم. @};-

پس به احتمال قوی مشکل از آن طرف است که در برنامه اش کلاسی که من می خواهم را نگذاشته... (البته اگر اشتباه نکنم در یکی از این jar ها یا zip ها بود... ولی باز یک کتابخانه ی دیگر که این کلاس به آن احتیاج داشت (مثلا یک کتابخانه از apache) غایب بود...)

برنامه ی خیلی عالی ای است... با این گیر نمی دانم چه کارش کنم... حالا بیشتر در موردش در آن جستار دیگر خدمتتان عرض می کنم... ولی فی الجمله بگویم که 99 درصد چیزی که می خواستم را با آن گرفته بودم... :کف:
فقط اینکه در صفحه ی html مورد نظر بعد از کلیک کردن روی یک دکمه، کد جاوااسکریپت را درست اجرا نمی کند... که باید صبر کنم نسخه ی جدید بیاید... :( یا اینکه مهاجرت کنم به یک برنامه ی دیگر...
کدش هم به این سادگی است:
(در حقیقت به همان سادگی بود! :گریه: )


public class test {

public static void main(String[] args) throws Exception {
try (WebClient webClient = new WebClient()) {
// __________________________________________________ __________
webClient.getOptions().setJavaScriptEnabled(true);

String url = "http://codal.ir/ReportList.aspx?1=&2=&3=&4=-1&5=%d8%af%d8%b9%d9%88%d8%aa&6=&7=&8=-1&9=-1&10=-1&11=&12=False&13=0";

WebRequest webRequest = new WebRequest(new URL(url));
webRequest.setCharset(StandardCharsets.UTF_8);

HtmlPage page = webClient.getPage(url);
System.out.println("______________________________");
HtmlTable html_table = page.getHtmlElementById("ctl00_ContentPlaceHolder1_gvList");
for (int i_h_table_row = html_table.getRowCount() - 1; i_h_table_row > 0; i_h_table_row--) {
final HtmlTableRow html_row = html_table.getRow(i_h_table_row);
String ticker = html_row.getCell(0).asText();
System.out.println(ticker);
}

System.out.println("______________________________");
HtmlForm form = page.getFormByName("aspnetForm");
HtmlSubmitInput button = form.getInputByName("ctl00$ContentPlaceHolder1$ucPager1$btnNext");
webClient.getCache().clear();
page = button.click();
System.out.println("______________________________");
HtmlTable html_table2 = page.getHtmlElementById("ctl00_ContentPlaceHolder1_gvList");
for (int i_h_table_row = html_table2.getRowCount() - 1; i_h_table_row > 0; i_h_table_row--) {
final HtmlTableRow html_row = html_table2.getRow(i_h_table_row);
String ticker = html_row.getCell(0).asText();
System.out.println(ticker);
}
}
}
}

کد بالا درست کار می کند... البته فقط روی یک صفحه! و صفحه ی بعد تکراری است... :ناراحت:

mhjbarnamenevis
سه شنبه 13 تیر 1396, 03:37 صبح
احتمالا مشکل از محتوای فایل zip هست. وگرنه در کل فایل zip مشکلی ندارد.
از آنجایی که فایل zip شما از عنوان bin در نام فایل استفاده کرده

منظورش این است محتوا مربوط به کدهای دودویی برای اجرا است (یعنی این فایل کامپایل شده است)
پس این مناسب نیست.

javadoc همان مستندات کتابخانه است که در مورد کلاس ها و متدها توضیح می دهد. داشتن این فایل ضروری نیست ولی برای راهنمایی مفید است.

sourceیا src به منظور کدهای کامپایل نشده هستند و شما به کدهای این کتابخانه دسترسی دارید. اینجا متوجه نشدم چرا دو فایل مجزا هستند و حجمشان خیلی متفاوت است.

اما کتابخانه ای که کد آن توسط کامپایلر جاوا کامپایل شده فایل .jar است (ممکن است .zip هم باشد ولی معمولا .jar است یا در فایل زیپ انواع jarها وجود داشته باشد). فایل jar همان آرشیو (مانند zip) است اما با نام اختصاصی برای فایل های جاوا و معمولا نه همیشه یا حاوی سورس کد است، یا مستندات و یا فایلهای .class که کامپایل شده .java هستند و قابل اجرا توسط jvm. به هر حال وجود کتابخانه htmlunit-2.28-SNAPSHOT.jar برای اجرا درست برنامه شما کفایت می کند.
پس به جای bin.zip از آخرین فایل استفاده کنید و به پروژه اضافه کنید.

دو تا پرسش:

الان این فایل های bin کلا به چه علتی ایجاد می شوند؟ کارایی شان چیست؟ (اینجا را نمی گویم. کلا عرض می کنم.) دقیقا متوجه نشدم، گفتید مناسب نیست، یعنی از اینها نمی توان به عنوان کتابخانه استفاده کرد؟ (گفتید این کامپایل شده است... از آن طرف JAR اصلی هم کامپایل شده است... این دو تا کامپایل با هم فرق می کنند؟)

اصلا (اصولا) کامپایل در جاوا به چه معنا است؟ برای اینکه کدهای جاوا در همه ی ماشین ها (اندروی و ویندوز و لینوکس و ...) قابل اجرا باشند من گمان می کردم نباید کامپایل باشند و باید حالتی خام داشته باشند... حالا اگر کامپایل شوند چگونه قرار است مطابق با همه ی ماشین ها کامپایل شوند؟

vahid-p
چهارشنبه 14 تیر 1396, 02:01 صبح
دو تا پرسش:

الان این فایل های bin کلا به چه علتی ایجاد می شوند؟ کارایی شان چیست؟ (اینجا را نمی گویم. کلا عرض می کنم.) دقیقا متوجه نشدم، گفتید مناسب نیست، یعنی از اینها نمی توان به عنوان کتابخانه استفاده کرد؟ (گفتید این کامپایل شده است... از آن طرف JAR اصلی هم کامپایل شده است... این دو تا کامپایل با هم فرق می کنند؟)

اصلا (اصولا) کامپایل در جاوا به چه معنا است؟ برای اینکه کدهای جاوا در همه ی ماشین ها (اندروی و ویندوز و لینوکس و ...) قابل اجرا باشند من گمان می کردم نباید کامپایل باشند و باید حالتی خام داشته باشند... حالا اگر کامپایل شوند چگونه قرار است مطابق با همه ی ماشین ها کامپایل شوند؟
قانون مشخصی ندارد که bin چی هست. ولی معمولا دارای فایل های .exe یا دیگر فایلهای اجرایی است که ممکن است ابزاری را در اختیار شما قرار بر روی پلتفرم های مختلف توسط ماشین مجازی خود اجرا خواهد کرد. این فایل ها .class هستند و مجموعه آنها در یک فایل .jar قرار میگیرد.
از آنجایی که در .jar ممکن است فایلهای .class و یا فایلهای سروس کد یا جاواداک قرار بگیرد، نمیتوان قانون کلی مطرح کرد که هر .jar به عنوان کتابخانه می توان استفاده کرد. در کتابخانه ای که مثال زدید فایل آخر همان کتابخانه مورد نیاز است. بقیه همگی پسوند دارند و مشخص است هدف هرکدام چیست. البته از source هم اغلب می توان استفاده کرد اما نه همیشه چون ممکن است وابستگی هایی داشته باشد و...