GVKun编程网logo

java、tomcat安装(java中tomcat怎么安装)

3

对于java、tomcat安装感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍java中tomcat怎么安装,并为您提供关于(Java学习笔记)JavaThreading(Java线程)、And

对于java、tomcat安装感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍java中tomcat怎么安装,并为您提供关于(Java 学习笔记) Java Threading (Java 线程)、Android:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.Object.toString()”、centos 7记录,tomcat安装、centOS tomcat安装的有用信息。

本文目录一览:

java、tomcat安装(java中tomcat怎么安装)

java、tomcat安装(java中tomcat怎么安装)

今天记录下如何安装java和tomcat,毕竟作为开发人员换电脑或重装系统后都是要装好这些环境的。

java的安装:

1、下载sdk,官网地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

最新版已经更新到12了,博主不知道是网络原因还是什么,点了下载后网络连接错误,于是就拿之前下的版本8安装了。

分享图片

 

分享图片

 

 

 下载好后,直接双击,然后跟着提示下一步,选好安装的路径后等待安装完成就可以了。cmd打开命令行输入java -version ,能看到版本号就是安装成功。

2、配置环境变量

右键电脑属性,高级系统设置,环境变量

分享图片

 

 

新建JAVA_HOME,变量值写sdk的目录

分享图片

 

 

找到path,添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin这两个变量值

分享图片

 

 

在系统变量新建CLAsspATH,变量值填  .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(最前面的点不能忽略,代表从当前路径)

分享图片

 

 以上完成后,cmd输入javac,能看到一系列目录即可

分享图片

 

安装完jdk后再安装tomcat 

 

tomcat的安装:

官网:http://tomcat.apache.org

有两种下载方式,一种是zip,一种是exe格式,这里下载exe格式的。

分享图片

 

 

分享图片

 

 

 

 下载好后双击,一路next就可以了,看到配置页时可以自行决定更改一些信息。安装包会自动识别jdk的目录,然后选择安装位置,等待完安装就可以了。

分享图片

 

 

 配置环境变量,系统变量心中CATALINA_HOME,变量值为tomcat安装的目录,然后path中添加值%CATALINA_HOME%\bin;%CATALINA_HOME%\lib

分享图片

 

分享图片

 

 

 回到tomcat安装目录,到bin目录双击startup,等命令窗口出现开启时间后,在浏览器输入localhost:8080出现tomcat欢迎页即为安装成功。

 

分享图片

 

 

分享图片

(Java 学习笔记) Java Threading (Java 线程)

(Java 学习笔记) Java Threading (Java 线程)

Java Threading (Java 线程)

● Process & Thread

Processes are the abstraction of running programs: A binary image, virtualized memory, various kernel resources, an associated security context, and so on.

Threads are the unit of execution in a process: A virtualized processor, a stack, and program state.

 

Threads are sometimes called lightweight processes. Both processes and threads provide an execution environment, but creating a new thread requires fewer resources than creating a new process.

Threads exist within a process — every process has at least one. Threads share the process''s resources, including memory and open files. This makes for efficient, but potentially problematic, communication.

 

Multithreaded execution is an essential feature of the Java platform. Every application has at least one thread — or several, if you count "system" threads that do things like memory management and signal handling. But from the application programmer''s point of view, you start with just one thread, called the main thread. This thread has the ability to create additional threads, as we''ll demonstrate in the next section.

 

● Processes

--Will by default not share memory

--Most file descriptors not shared

--Don''t share filesystem context

--Don''t share signal handling

 

● Threads

--Will by default share memory

--Will share file descriptors

--Will share filesystem context

--Will share signal handling

 

● Thread pool

Thread pool represents a group of worker threads that are waiting for the job and reuse many times,

 

● Thread life cycle & states

 

 

Android:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.Object.toString()”

Android:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.Object.toString()”

面对我正在使用的练习应用程序的问题。我面临与toString方法有关的NullPointerException问题。作为android应用程序开发的新手,即使经过研究,我也不确定确切的原因。因此,我要求一个更熟悉堆栈跟踪的人来帮助我。

注意:当我单击列表视图条目以访问日记条目的编辑页面时,将发生错误。但是,它似乎根本没有进入编辑页面。

在下面,您将找到我的活动代码及其堆栈跟踪。

活动代码:

import android.app.AlertDialog;import android.content.DialogInterface;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.content.Intent;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;public class ViewDiaryEntries extends AppCompatActivity {// Database HelperMyDBHandler db;// ListviewListView data_list;// Test varpublic final static String KEY_EXTRA_DATA_ID = "KEY_EXTRA_DATA_ID";@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_view_diary_entries);    db = new MyDBHandler(this);    // Displays the database items.    displayItems();}// To display items in the listview.public void displayItems(){    // To display items in a listview.    ArrayList db_data_list = db.getDiaryDBDataList();    ArrayAdapter listAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, db_data_list);    // Set the adapter for the listview    data_list = (ListView) findViewById(R.id.dataListView);    data_list.setAdapter(listAdapter);    /* Experiment -------------------------------------------------------------*/    data_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {        @Override        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {            // Selected item store            String selectedEntry = ((TextView) view).getText().toString();            // Test for regular expression            String[] listViewItemSplit = selectedEntry.split(" - ");            String listViewItempt1 = listViewItemSplit[0]; // For date and time            //String listViewItempt2 = listViewItemSplit[1]; // For save file name            //Toast.makeText(ViewDiaryEntries.this, listViewItempt1, Toast.LENGTH_LONG).show();            if(listViewItempt1.equals("")){                Toast.makeText(ViewDiaryEntries.this, "Error. Unable to detect entry ID.", Toast.LENGTH_LONG).show();            }            else{                // Pass on the data:                Intent editEntry = new Intent(ViewDiaryEntries.this, editdiaryentry.class);                editEntry.putExtra(KEY_EXTRA_DATA_ID, listViewItempt1);                startActivity(editEntry);            }        }    });}// For the go back button.public void viewdiarytoinitialdiary_backbutt(View v){    // Create and start new intent going back ot main page.    Intent main_page = new Intent(ViewDiaryEntries.this, User_Main_Menu_Options.class);    main_page.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);    startActivity(main_page);}// For the about button.public void viewdiarypage_directionabout_butt(View v){    // Create an alert dialog    final AlertDialog.Builder about_page_dialog = new AlertDialog.Builder(ViewDiaryEntries.this);    about_page_dialog.setTitle("About This Page:");    // Inputs values for the dialog message.    final String dialog_message = "This page will show you any saved diary entries you''ve.\n\n To edit an entry, do the following: \n\n- Take note of the Entry ID# (first value on entry display) \n- Type it in the number box at the bottom. \n- Press Edit Record icon next to number box, and wait for it to load.";    about_page_dialog.setMessage(dialog_message);    about_page_dialog.setPositiveButton("Got it!", new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {            // Closes the dialog.            dialog.cancel();        }    });    // Shows the dialog.    about_page_dialog.show();}// Main menu button.public void viewDiaryEntriesMainMenushortcut_butt(View v){    // Creates main menu alert dialog.    AlertDialog.Builder mainMenu_Dialog = new AlertDialog.Builder(this);    mainMenu_Dialog.setIcon(R.drawable.main_menu_symbol);    mainMenu_Dialog.setTitle("Main Menu");    // Creates array adapter with items to fill the menu with.    final ArrayAdapter<String> menuItemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);    menuItemsAdapter.add("Home Screen");    menuItemsAdapter.add("Diary");    menuItemsAdapter.add("Tests");    menuItemsAdapter.add("Activity");    menuItemsAdapter.add("Media");    menuItemsAdapter.add("Thought of the Day");    menuItemsAdapter.add("Inspirational Quotes");    menuItemsAdapter.add("Resources");    menuItemsAdapter.add("Settings");    // To close menu.    mainMenu_Dialog.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {            dialog.cancel();        }    });    // To go to appropriate page upon selection.    mainMenu_Dialog.setAdapter(menuItemsAdapter, new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {            String selectedItem = menuItemsAdapter.getItem(which);            if(selectedItem.equals("Home Screen")){                // Goes to main menu.                Intent mainMenu = new Intent(ViewDiaryEntries.this, User_Main_Menu_Options.class);                mainMenu.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(mainMenu);            }            else if(selectedItem.equals("Diary")){                // Goes to diary page.                Intent diaryPage = new Intent(ViewDiaryEntries.this, ViewDiaryEntries.class);                diaryPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(diaryPage);            }            else if(selectedItem.equals("Tests")){                // Goes to tests page.                Intent testsPage = new Intent(ViewDiaryEntries.this, TestChoices.class);                testsPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(testsPage);            }            else if(selectedItem.equals("Media")){                // Goes to media page.                Intent mediaPage = new Intent(ViewDiaryEntries.this, initialMediaPage.class);                mediaPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(mediaPage);            }            else if(selectedItem.equals("Thought of the Day")){                // Goes to thought of the day page.                Intent thoughtofthedayPage = new Intent(ViewDiaryEntries.this, thoughtQuotes.class);                thoughtofthedayPage.putExtra("quote_or_thought", 2);                thoughtofthedayPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(thoughtofthedayPage);            }            else if(selectedItem.equals("Inspirational Quotes")){                // Goes to inspirational quotes page.                Intent inspirationalquotesPage = new Intent(ViewDiaryEntries.this, thoughtQuotes.class);                inspirationalquotesPage.putExtra("quote_or_thought", 1);                inspirationalquotesPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(inspirationalquotesPage);            }            else if(selectedItem.equals("Settings")){                // Goes to settings page.                Intent settingsPage = new Intent(ViewDiaryEntries.this, settings.class);                settingsPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(settingsPage);            }        }    });    mainMenu_Dialog.show();}// For the settings button.public void viewdiarypagelisttoSettings_butt(View v){    // Goes to settings page.    Intent settingsPage = new Intent(ViewDiaryEntries.this, settings.class);    settingsPage.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);    startActivity(settingsPage);}// For new entry.public void viewdiarypageaddEntry_butt(View v){    // Opening up the diary add intent.    Intent newdiaryEntry = new Intent(ViewDiaryEntries.this, newdiaryentry.class);    startActivity(newdiaryEntry);}}

这是我看到的堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method ''java.lang.String java.lang.Object.toString()'' on a null object reference        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:401)        at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)        at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:194)        at android.widget.Spinner.onMeasure(Spinner.java:580)        at android.support.v7.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:407)        at android.view.View.measure(View.java:18794)        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)        at android.view.View.measure(View.java:18794)        at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1283)        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)        at android.widget.ScrollView.onMeasure(ScrollView.java:340)        at android.view.View.measure(View.java:18794)        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)        at android.view.View.measure(View.java:18794)        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)        at android.view.View.measure(View.java:18794)        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)        at android.view.View.measure(View.java:18794)        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)        at android.view.View.measure(View.java:18794)        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)        at android.view.View.measure(View.java:18794)        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)        at android.view.Choreographer.doCallbacks(Choreographer.java:670)        at android.view.Choreographer.doFrame(Choreographer.java:606)        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)        at android.os.Handler.handleCallback(Handler.java:739)        at android.os.Handler.dispatchMessage(Handler.java:95)        at android.os.Looper.loop(Looper.java:148)        at android.app.ActivityThread.main(ActivityThread.java:5417)        at java.lang.reflect.Method.invoke(Native Method)        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

任何对解决方案的帮助将不胜感激。

编辑:

因此,在从数据库和与之交互的活动之间的代码来回浏览之后,我设法使其重新工作。以下是我按确切顺序执行的操作:

  1. 我意识到我有一个日期字段没有接收任何数据,对此进行了纠正。
  2. 清理了项目。
  3. 重新启动Android Studio(基本上停止开发环境的所有操作)。
  4. 从我的开发手机上卸载了该应用。
  5. 重新启动android studio并重新安装该应用程序。
  6. 我以某种方式工作= _ =,是的,这很神奇。

老实说,我不知道哪一步真正解决了它。我猜这是数据库中的日期字段在我没有收到任何数据的同时给我带来了麻烦。

答案1

小编典典

您的阵列中ArrayAdapter至少包含一个条目null。那里不能有空值。

数组被填充,getDiaryDBDataList()所以问题也在那里。

centos 7记录,tomcat安装

centos 7记录,tomcat安装

今天在VMware虚拟机中经过千辛万苦终于安装好了centos7。。正兴致勃勃的例行yum update 却发现centos系统貌似默认网卡没配置好,反馈无法联网。经过一番研究,终于让centos连上了网,现公布方法如下:

进入目录:

/etc/sysconfig/network-scripts/

用vim(或者vi,随你便咯)编辑该文件

将最后一行的ONBOOT=no改为ONBOOT=yes,如图

最后输入:wq 保存并退出,再重启一下network:

service network restart

tomcat 安装
http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891633.html

contos 7 防火墙策略和配置

http://blog.csdn.net/czmchen/article/details/46389801

jdk 安装

http://jingyan.baidu.com/article/48a42057f1f0a4a925250464.html

centOS tomcat安装

centOS tomcat安装

1.cd /usr/local

2.http://tomcat.apache.org/download-80.cgi 

2、安装vim和lrzsz:yum install -y vim lrzsz

3.tar  -zxf apache-tomcat-8.5.32.tar.gz  解压

今天关于java、tomcat安装java中tomcat怎么安装的分享就到这里,希望大家有所收获,若想了解更多关于(Java 学习笔记) Java Threading (Java 线程)、Android:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.Object.toString()”、centos 7记录,tomcat安装、centOS tomcat安装等相关知识,可以在本站进行查询。

本文标签: