###############################################################################
# Copyright (c) 2003, 2005 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 Corporation - initial API and implementation
###############################################################################
#This properties file contains string for Archive operations of EARs


ARCHIVE_OPERATION_SaveMofResources=Error occurred saving the metadata file.
ARCHIVE_OPERATION_SaveFile=Error occurred saving the file.
ARCHIVE_OPERATION_ProjectNature=Error getting project nature runtime.
ARCHIVE_OPERATION_SaveManifest=Error occurred saving the manifest.
ARCHIVE_OPERATION_FileNotFound=Error: File not found.
ARCHIVE_OPERATION_FileContents=Core exception caught in getting file contents.
ARCHIVE_OPERATION_ErroOccured=Error occurred.
ARCHIVE_OPERATION_FilesFromProject=Unable to get files, modules, or utility JARs in the EAR.  Check log files.
ARCHIVE_OPERATION_OpeningArchive=Error opening archive for export.
ARCHIVE_OPERATION_ImportOperation=Import Operation Failed!
IMPORT_MOFRESOURCE_STRING=Importing metadata..
EAR_IMPORT_FILE_STRING=Importing file..
ERROR_IMPORTING_EAR_FILE=Error importing EAR file.
ERROR_EXPORTING_EAR_FILE=Error exporting EAR file.
IMPORTING_EAR_FILE_UI_=Importing EAR file...

Updating_project_classpath_UI_=Updating project classpaths...

UNABLE_TO_LOAD_MODULE_ERROR_=IWAE0001E The module \" {0} \" in Enterprise Application project \" {1} \" could not be loaded.\n {2};
_jar_UI_=.jar
Updating_manifest_Class_Path__attributes_UI_=Updating manifest Class-Path: attributes
_preDeploy_ERROR_=IWAE0002E {0}.preDeploy
