/*******************************************************************************
 * Copyright (c) 2000, 2017 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * IBM - Initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.internal.launching;

import org.eclipse.osgi.util.NLS;

public class LaunchingMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.jdt.internal.launching.LaunchingMessages";//$NON-NLS-1$

	public static String AbstractJavaLaunchConfigurationDelegate_Java_project_not_specified_9;
	public static String AbstractJavaLaunchConfigurationDelegate_JRE_home_directory_for__0__does_not_exist___1__6;
	public static String AbstractJavaLaunchConfigurationDelegate_JRE_home_directory_not_specified_for__0__5;
	public static String AbstractJavaLaunchConfigurationDelegate_Main_type_not_specified_11;
	public static String AbstractJavaLaunchConfigurationDelegate_Project_does_not_exist_or_is_not_a_Java_project_10;
	public static String AbstractJavaLaunchConfigurationDelegate_The_specified_JRE_installation_does_not_exist_4;
	public static String AbstractJavaLaunchConfigurationDelegate_Working_directory_does_not_exist___0__12;

	public static String ClasspathContainerSourceContainerTypeDelegate_5;
	public static String ClasspathContainerSourceContainerTypeDelegate_6;
	public static String ClasspathContainerSourceContainerTypeDelegate_7;

	public static String ClasspathVariableSourceContainerTypeDelegate_5;
	public static String ClasspathVariableSourceContainerTypeDelegate_6;
	public static String ClasspathVariableSourceContainerTypeDelegate_7;

	public static String DefaultProjectClasspathEntry_2;

	public static String DefaultProjectClasspathEntry_3;
	public static String DefaultProjectClasspathEntry_4;

	public static String EEVMType_1;
	public static String EEVMType_2;
	public static String EEVMType_3;
	public static String EEVMType_4;
	public static String EEVMType_5;
	public static String EEVMType_6;

	public static String ExecutionEnvironmentDescription_0;

	public static String ExecutionEnvironmentDescription_1;

	public static String JavaLocalApplicationLaunchConfigurationDelegate_Verifying_launch_attributes____1;
	public static String JavaLocalApplicationLaunchConfigurationDelegate_Creating_source_locator____2;
	public static String JavaLocalApplicationLaunchConfigurationDelegate_0;

	public static String JavaProjectSourceContainerTypeDelegate_5;
	public static String JavaProjectSourceContainerTypeDelegate_6;
	public static String JavaProjectSourceContainerTypeDelegate_7;

	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Connector_not_specified_2;
	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Attaching_to__0_____1;
	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Verifying_launch_attributes____1;
	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Creating_source_locator____2;

	public static String JavaRuntime_24;

	public static String JavaRuntime_25;

	public static String JavaRuntime_badFormat;
	public static String JavaRuntime_Specified_VM_install_type_does_not_exist___0__2;
	public static String JavaRuntime_Specified_VM_install_not_found__type__0___name__1__2;
	public static String JavaRuntime_Launch_configuration__0__references_non_existing_project__1___1;
	public static String JavaRuntime_Could_not_resolve_classpath_container___0__1;
	public static String JavaRuntime_Classpath_references_non_existant_project___0__3;
	public static String JavaRuntime_Classpath_references_non_existant_archive___0__4;
	public static String JavaRuntime_26;
	public static String JavaRuntime_27;
	public static String JavaRuntime_28;
	public static String JavaRuntime_32;

	public static String LaunchingPlugin_35;
	public static String LaunchingPlugin_36;
	public static String LaunchingPlugin_37;
	public static String LaunchingPlugin_32;
	public static String LaunchingPlugin_34;
	public static String LaunchingPlugin_0;
	public static String LaunchingPlugin_1;

	public static String LaunchingPlugin_38;

	public static String libraryLocation_assert_libraryNotNull;

	public static String SocketAttachConnector_Failed_to_connect_to_remote_VM_1;
	public static String SocketAttachConnector_Socket_attaching_connector_not_available_3;
	public static String SocketAttachConnector_Standard__Socket_Attach__4;
	public static String SocketAttachConnector_Failed_to_connect_to_remote_VM_because_of_unknown_host____0___1;
	public static String SocketAttachConnector_Failed_to_connect_to_remote_VM_as_connection_was_refused_2;
	public static String SocketAttachConnector_Connecting____1;
	public static String SocketAttachConnector_Configuring_connection____1;
	public static String SocketAttachConnector_Establishing_connection____2;

	public static String SocketListenConnector_0;
	public static String SocketListenConnector_1;
	public static String SocketListenConnector_2;
	public static String SocketListenConnector_3;
	public static String SocketListenConnector_4;
	public static String SocketListenConnectorProcess_0;
	public static String SocketListenConnectorProcess_1;
	public static String SocketListenConnectorProcess_4;
	public static String SocketListenConnectorProcess_5;

	public static String StandardVMDebugger_Could_not_find_a_free_socket_for_the_debugger_1;
	public static String StandardVMDebugger_Couldn__t_connect_to_VM_4;
	public static String StandardVMDebugger_Couldn__t_connect_to_VM_5;
	public static String StandardVMDebugger_Couldn__t_find_an_appropriate_debug_connector_2;
	public static String StandardVMDebugger_Launching_VM____1;
	public static String StandardVMDebugger_Finding_free_socket____2;
	public static String StandardVMDebugger_Constructing_command_line____3;
	public static String StandardVMDebugger_Starting_virtual_machine____4;
	public static String StandardVMDebugger_Establishing_debug_connection____5;

	public static String StandardVMRunner__0____1___2;
	public static String StandardVMRunner__0__at_localhost__1__1;
	public static String StandardVMRunner_Specified_working_directory_does_not_exist_or_is_not_a_directory___0__3;
	public static String StandardVMRunner_Launching_VM____1;
	public static String StandardVMRunner_Constructing_command_line____2;
	public static String StandardVMRunner_Starting_virtual_machine____3;
	public static String StandardVMRunner_Unable_to_locate_executable_for__0__1;
	public static String StandardVMRunner_Specified_executable__0__does_not_exist_for__1__4;

	public static String StandardVMType_Not_a_JDK_Root__Java_executable_was_not_found_1;
	public static String StandardVMType_ok_2;
	public static String StandardVMType_Standard_VM_3;
	public static String StandardVMType_Not_a_JDK_root__System_library_was_not_found__1;

	public static String VMDefinitionsContainer_0;

	public static String VMDefinitionsContainer_10;

	public static String VMDefinitionsContainer_2;

	public static String VMDefinitionsContainer_3;

	public static String VMDefinitionsContainer_4;

	public static String VMDefinitionsContainer_5;

	public static String VMDefinitionsContainer_6;

	public static String VMDefinitionsContainer_7;

	public static String VMDefinitionsContainer_9;

	public static String vmInstall_assert_idNotNull;
	public static String vmInstall_assert_typeNotNull;

	public static String vmInstallType_duplicateVM;

	public static String vmRunnerConfig_assert_classNotNull;
	public static String vmRunnerConfig_assert_classPathNotNull;
	public static String vmRunnerConfig_assert_programArgsNotNull;
	public static String vmRunnerConfig_assert_vmArgsNotNull;

	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry_type_2;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry_location_3;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry___missing_project_name_4;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry___missing_archive_path_5;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry___missing_variable_name_6;
	public static String RuntimeClasspathEntry_Illegal_classpath_entry__0__1;

	public static String JREContainer_JRE_System_Library_1;

	public static String SocketAttachConnector_Port_unspecified_for_remote_connection__2;
	public static String SocketAttachConnector_Hostname_unspecified_for_remote_connection__4;

	public static String JREContainerInitializer_JRE_referenced_by_classpath_container__0__does_not_exist__1;
	public static String JREContainerInitializer_Classpath_entry__0__does_not_refer_to_an_existing_library__2;
	public static String JREContainerInitializer_Classpath_entry__0__does_not_refer_to_a_library__3;
	public static String JREContainerInitializer_Default_System_Library_1;

	public static String ArchiveSourceLocation_Unable_to_initialize_source_location___missing_archive_path__3;
	public static String ArchiveSourceLocation_Exception_occurred_initializing_source_location__5;
	public static String ArchiveSourceLocation_Unable_to_locate_source_element_in_archive__0__1;
	public static String ArchiveSourceLocation_Exception_occurred_while_detecting_root_source_directory_in_archive__0__1;
	public static String ArchiveSourceLocation_Exception_occurred_while_detecting_root_source_directory_in_archive__0__2;

	public static String DirectorySourceLocation_Unable_to_initialize_source_location___missing_directory_path_3;
	public static String DirectorySourceLocation_Unable_to_initialize_source_location___directory_does_not_exist___0__4;
	public static String DirectorySourceLocation_Exception_occurred_initializing_source_location__5;

	public static String JavaProjectSourceLocation_Unable_to_initialize_source_location___missing_project_name_3;
	public static String JavaProjectSourceLocation_Exception_occurred_initializing_source_location__4;

	public static String JavaSourceLocator_Illegal_to_have_a_container_resolved_to_a_container_1;
	public static String JavaSourceLocator_Unable_to_restore_Java_source_locator___invalid_format__6;
	public static String JavaSourceLocator_Unable_to_restore_Java_source_locator___invalid_format__10;
	public static String JavaSourceLocator_Unable_to_restore_source_location___class_not_found___0__11;
	public static String JavaSourceLocator_Unable_to_restore_source_location__12;
	public static String JavaSourceLocator_Unable_to_restore_Java_source_locator___invalid_format__14;
	public static String JavaSourceLocator_Exception_occurred_initializing_source_locator__15;

	public static String Standard11xVMType_Standard_1_1_x_VM_1;

	public static String PackageFragmentRootSourceLocation_Unable_to_initialize_source_location___missing_handle_identifier_for_package_fragment_root__6;
	public static String PackageFragmentRootSourceLocation_Unable_to_initialize_source_location___package_fragment_root_does_not_exist__7;
	public static String PackageFragmentRootSourceLocation_Exception_occurred_initializing_source_location__8;
	public static String JavaAppletLaunchConfigurationDelegate_Could_not_build_HTML_file_for_applet_launch_1;
	public static String AbstractVMRunner_0;
	public static String AbstractJavaLaunchConfigurationDelegate_20;

	public static String PackageFragmentRootSourceContainerTypeDelegate_6;
	public static String PackageFragmentRootSourceContainerTypeDelegate_7;
	public static String PackageFragmentRootSourceContainerTypeDelegate_8;

	public static String ProjectClasspathVariableResolver_1;
	public static String ProjectClasspathVariableResolver_2;
	public static String ProjectClasspathVariableResolver_3;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, LaunchingMessages.class);
	}

    public static String SocketAttachConnector_0;

	public static String AbstractVMInstall_0;

	public static String AbstractVMInstall_1;

	public static String AbstractVMInstall_3;

	public static String AbstractVMInstall_4;

	public static String MacInstalledJREs_0;

	public static String MacInstalledJREs_1;

	public static String RunnerBootpathError;

	public static String RunnerBootpathPError;

}
